bash: 如何在字符串中添加space?
bash: How to add space in string?
我有这样的字符串:
string="aaa-bbb"
但是我想在字符'-'之前添加space,所以我想要这个:
aaa -bbb
我尝试了很多东西,但我不能在那里添加 space。我试过 echo $string | tr '-' ' -'
和其他一些东西,但没有用...
我有 Linux Mint:GNU bash,版本 4.3.8(1)
试试这个:
printf "%s\n" "${string}" | sed 's/-/ -/g'
它查找 -
并将其替换为 -
(space 连字符)
tr
一次只能替换一个字符。你要找的是 sed
:
echo "$string" | sed 's/-/ -/'
无需调用sed
,在BASH中使用string substitution原生:
$ foo="abc-def-ghi"
$ echo "${foo//-/ -}"
abc -def -ghi
注意变量名后的两个斜杠:第一个斜杠替换第一个出现的地方,两个斜杠替换每个出现的地方。
Bash 具有内置字符串替换。
result="${string/-/ -}"
echo "$result"
或者您可以使用 sed
:
result=$(echo "$string" | sed 's/-/ -/')
echo "$result"
您要求 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"
我有这样的字符串:
string="aaa-bbb"
但是我想在字符'-'之前添加space,所以我想要这个:
aaa -bbb
我尝试了很多东西,但我不能在那里添加 space。我试过 echo $string | tr '-' ' -'
和其他一些东西,但没有用...
我有 Linux Mint:GNU bash,版本 4.3.8(1)
试试这个:
printf "%s\n" "${string}" | sed 's/-/ -/g'
它查找 -
并将其替换为 -
(space 连字符)
tr
一次只能替换一个字符。你要找的是 sed
:
echo "$string" | sed 's/-/ -/'
无需调用sed
,在BASH中使用string substitution原生:
$ foo="abc-def-ghi"
$ echo "${foo//-/ -}"
abc -def -ghi
注意变量名后的两个斜杠:第一个斜杠替换第一个出现的地方,两个斜杠替换每个出现的地方。
Bash 具有内置字符串替换。
result="${string/-/ -}"
echo "$result"
或者您可以使用 sed
:
result=$(echo "$string" | sed 's/-/ -/')
echo "$result"
您要求 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"