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)
^
[...]
awk
sub(/[\^]/, " & ", str)