K.D*_*D.G 11 command-line text-processing
我也许可以使用<or>或|。也许我需要使用grep?
小智 28
您可以使用tr命令来转换字符。
% echo "foo.foo.foo" | tr '.' ' '
foo foo foo
Run Code Online (Sandbox Code Playgroud)
mur*_*uru 24
使用纯 bash:
bash-3.2$ a='a.a.a'
bash-3.2$ echo "${a/./ }"
a a.a
bash-3.2$ echo "${a//./ }"
a a a
Run Code Online (Sandbox Code Playgroud)
Zan*_*nna 20
您可以创建一个函数并添加到您的末尾~/.bashrc,例如:
nodot() { echo "$1" | sed 's/\./ /g' ; }
Run Code Online (Sandbox Code Playgroud)
用法示例:
$ nodot foo.foo.foo
foo foo foo
Run Code Online (Sandbox Code Playgroud)
您也可以在 zsh 中使用此功能,只需添加到您的即可~/.zshrc。
使用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
Run Code Online (Sandbox Code Playgroud)
这可以很好地放入一个函数中:
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
}
Run Code Online (Sandbox Code Playgroud)
并运行:
bash-4.3$ split_dot "foo.baz.bar"
foo baz bar
Run Code Online (Sandbox Code Playgroud)