「^」を空白にする方法は?

「^」を空白にする方法は?

Unixから^空白に置き換える方法は?

入力する:

ab^cd^ef

出力:

ab cd ef

これを試しましたが、sub(/^/, " & ", str)出力は入力と同じです。

答え1

これは次のとおりですtr

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

存在するbash, ksh93, mksh, zsh:

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

存在するzsh

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

答え2

使用sed

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

すでにコメント作成者:@jasonwryanインラインシェル文字列置換を使用できます。

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

別の種類、提案者おめでとうございます

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

(注:y文字を変換するために使用されます。)

答え3

awkあなたがそれをあなたのものに変えたいとしましょう。

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

^提案は拡張正規表現演算子(/^/文字列の先頭で一致を意味する)なので、エスケープする必要があります。

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

inside の最初の発生は (space- -space) に^置き換えられます。スペースに置き換えてすべての項目を置き換えるために使用されます。str^^sub(/\^/, " ", str)gsub(/\^/, " ", str)

特別な内部要素sub(/[^]/, " & ", str)として使用できないことに注意してください。ただし、ほとんどの実装ではこれをサポートしています。 ^[...]awksub(/[\^]/, " & ", str)

関連情報