如何将“^”替换为空格?

如何将“^”替换为空格?

Unix下如何^用空格替换?

输入:

ab^cd^ef

输出:

ab cd ef

我已经尝试过sub(/^/, " & ", str),但输出与输入相同。

答案1

这就是工作tr

$ str=ab^cd^ef
$ printf '%s\n' "$str" | tr '^' ' '
ab cd ef

bashksh93mkshzsh

printf '%s\n' "${str//^/ }"

zsh

print -rl -- "${str:gs/^/ /}"

答案2

使用sed

$ echo "ab^cd^ef" | sed 's,\^, ,g'
ab cd ef

已经评论者:@jasonwryan您可以使用内联 shell 字符串替换,

$ str="ab^cd^ef"
$ echo "${str//^/ }"
ab cd ef

另一种,建议者@someonewithpc

$ echo "ab^cd^ef" | sed 'y,^, ,'
ab cd ef

(注:y用于转换字符。)

答案3

假设您想将其替换awk为您的

sub(/^/, " & ", str)

建议,您需要转义,^因为它是扩展的正则表达式运算符(/^/表示在字符串开头匹配):

sub(/\^/, " & ", str)

会将第一次出现的^inside替换str^(space- ^-space)。用于sub(/\^/, " ", str)替换为空格,并gsub(/\^/, " ", str)替换所有出现的情况。

请注意,您不能使用sub(/[^]/, " & ", str)as^恰好也是特殊的内部[...]。但大多数awk实现都支持sub(/[\^]/, " & ", str)

相关内容