K.D.G Asked: 2016-11-20 01:43:58 +0800 CST2016-11-20 01:43:58 +0800 CST 2016-11-20 01:43:58 +0800 CST 如何让 bash/zsh 使用脚本/别名将某些文本从“foo.foo.foo”更改为“foo foo foo”? 772 我也许可以使用<or>或|. 也许我需要使用grep? command-line 6 个回答 Voted Validus Oculus 2016-11-20T04:07:31+08:002016-11-20T04:07:31+08:00 您可以使用tr命令来转换字符。 % echo "foo.foo.foo" | tr '.' ' ' foo foo foo muru 2016-11-20T02:17:54+08:002016-11-20T02:17:54+08:00 使用纯 bash: bash-3.2$ a='a.a.a' bash-3.2$ echo "${a/./ }" a a.a bash-3.2$ echo "${a//./ }" a a a Best Answer Zanna 2016-11-20T02:13:15+08:002016-11-20T02:13:15+08:00 您可以创建一个函数并添加到您的末尾~/.bashrc,例如: nodot() { echo "$1" | sed 's/\./ /g' ; } 用法示例: $ nodot foo.foo.foo foo foo foo 您也可以在 zsh 中使用此功能,只需添加到您的~/.zshrc。 Sergiy Kolodyazhnyy 2016-11-20T06:34:52+08:002016-11-20T06:34:52+08:00 使用Internal Field Separator (IFS)变量: bash-4.3$ old_ifs=$IFS bash-4.3$ IFS="." bash-4.3$ var="foo.foo.foo" bash-4.3$ echo $var foo foo foo bash-4.3$ IFS=$old_ifs 这可以很好地放入一个函数中: split_dot() { string="$1" if set | grep -q "IFS"; then ifs_unset="false" old_ifs=$IFS else ifs_unset="true" fi IFS="." echo $string if [ "$ifs_unset" == "true" ]; then unset IFS else IFS=$old_ifs fi } 并这样运行: bash-4.3$ split_dot "foo.baz.bar" foo baz bar heemayl 2016-11-21T07:58:30+08:002016-11-21T07:58:30+08:00 有人错过awk/// :perl_pythongo % awk '{gsub(/[.]/, " ", $0); print}' <<<'foo.foo.foo' foo foo foo % perl -pe 's/\./ /g' <<<'foo.foo.foo' foo foo foo % python -c 'import sys; print sys.stdin.read().replace(".", " ")' <<<'foo.foo.foo' foo foo foo % cat input.go package main import ( "os" "strings" "fmt" ) func main () { args := os.Args if len(args) != 2 { fmt.Println("Not enough arguments") return } out := strings.Replace(args[1], ".", " ", -1) fmt.Println(out) } % go run input.go 'foo.foo.foo' foo foo foo sourav c. 2016-11-24T06:53:12+08:002016-11-24T06:53:12+08:00 一个也可以用xargs。这是一个使用xargs $ echo "foo.foo.foo" | xargs -d . foo foo foo
您可以使用tr命令来转换字符。
使用纯 bash:
您可以创建一个函数并添加到您的末尾
~/.bashrc
,例如:用法示例:
您也可以在 zsh 中使用此功能,只需添加到您的
~/.zshrc
。使用
Internal Field Separator (IFS)
变量:这可以很好地放入一个函数中:
并这样运行:
有人错过
awk
/// :perl
_python
go
一个也可以用
xargs
。这是一个使用xargs