普通のLinuxコマンドでファイル中の文字列を置換したいとき、置換後の文字列が不定(任意の文字を含み得る)のときってどうするのがいいんだろう。

jqありなら以下で行ける。

jq --raw-input --raw-output --arg x "$STR" 'gsub("foo", $x)' foo.txt > result.txt

短く書くと以下のようになる。

jq -Rr --arg x "$STR" 'gsub("foo", $x)' foo.txt > result.txt

AWKでawk -v FS=foo -v OFS="$STR" '{$1 = $1; print}'だとOFS内のバックスラッシュが解釈されてしまう。

cutのデリミタは1文字である必要がある。

Reply to this note

Please Login to reply.

Discussion

No replies yet.