我有一个字符串,类似于这样:
string="aaa-bbb"
但我想在字符“-”之前添加空格,所以我希望得到这样的结果:
aaa -bbb
我尝试了很多方法,但是我无法添加空格。我尝试使用echo $string | tr '-' ' -'
和其他一些方法,但都没有起作用...
我的操作系统是Linux Mint: GNU bash,版本为4.3.8(1)
不需要调用sed
,可以使用 BASH 中本地的字符串替换功能:
$ foo="abc-def-ghi"
$ echo "${foo//-/ -}"
abc -def -ghi
请注意变量名后面的两个斜杠:第一个斜杠用于替换第一次出现的字符,而第二个斜杠则用于替换所有的字符。
Bash内置了字符串替换功能。
$ string="aaa-bbb"
$ result="${string/-/ -}"
$ echo "$result"
aaa -bbb
另外,您可以使用 sed
或 perl
:
$ string="aaa-bbb"
$ result=$(sed 's/-/ -/' <<< $string)
$ echo "$result"
aaa -bbb
$ result=$(perl -pe 's/-/ -/' <<< $string)
$ echo "$result"
aaa -bbb
尝试一下这个:
printf "%s\n" "${string}" | sed 's/-/ -/g'
-
并将其替换为-
(空格连字符)tr
只能替换一个字符,而你需要的是 sed
:
echo "$string" | sed 's/-/ -/'
$string
。$ string="a -b -c"
$ printf '<%s>\n' $string
<a>
<-b>
<-c>
$ printf '<%s>\n' "$string"
<a -b -c>
-
更改为-
,有许多解决方案:string =“ $(echo“ $ string”| sed' s /- / - / g')”; echo“ $ string”
string =“ $ {string // - / - } ; echo“ $ string”