我有一个这样的字符串:
string="aaa-bbb"
但是我想在char' - '之前添加空格,所以我想要这个:
aaa -bbb
我尝试了很多东西,但我无法在那里添加空间。我尝试了echo $string | tr '-' ' -'
和其他一些东西,但它没有用......
我有Linux Mint:GNU bash,版本4.3.8(1)
答案 0 :(得分:5)
无需致电sed
,在BASH使用string substitution本地语:
$ foo="abc-def-ghi"
$ echo "${foo//-/ -}"
abc -def -ghi
请注意变量名后面的两个斜杠:第一个斜杠替换第一个匹配项,其中两个斜杠替换每个匹配项。
答案 1 :(得分:1)
尝试一下:
printf "%s\n" "${string}" | sed 's/-/ -/g'
它会查找-
并将其替换为-
(空格连字符)
答案 2 :(得分:1)
tr
一次只能替换一个字符。您正在寻找的是sed
:
echo "$string" | sed 's/-/ -/'
答案 3 :(得分:1)
Bash内置字符串替换。
result="${string/-/ -}"
echo "$result"
或者,您可以使用sed
:
result=$(echo "$string" | sed 's/-/ -/')
echo "$result"
答案 4 :(得分:1)
您要求shell回显未引用的变量$string
发生这种情况时,变量内的空格用于分割字符串:
$ string="a -b -c"
$ printf '<%s>\n' $string
<a>
<-b>
<-c>
变量确实包含空格,只是你没有正确看到它。 Quote your expansions
$ printf '<%s>\n' "$string"
<a -b -c>
要将变量从-
更改为-
,有许多解决方案:
sed:string="$(echo "$string" | sed 's/-/ -/g')"; echo "$string"
bash:string="${string//-/ -}; echo "$string"