ruto on Nostr: ...
普通の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文字である必要がある。
Published at
2023-10-13 15:15:43Event JSON
{
"id": "0c4813360047bc7894fc9a2c11f52165ac27d1113e62862cb5e8d73a69c523ad",
"pubkey": "2888961a564e080dfe35ad8fc6517b920d2fcd2b7830c73f7c3f9f2abae90ea9",
"created_at": 1697210143,
"kind": 1,
"tags": [],
"content": "普通のLinuxコマンドでファイル中の文字列を置換したいとき、置換後の文字列が不定(任意の文字を含み得る)のときってどうするのがいいんだろう。\njqありなら以下で行ける。\njq --raw-input --raw-output --arg x \"$STR\" 'gsub(\"foo\", $x)' foo.txt \u003e result.txt\n短く書くと以下のようになる。\njq -Rr --arg x \"$STR\" 'gsub(\"foo\", $x)' foo.txt \u003e result.txt\n\nAWKでawk -v FS=foo -v OFS=\"$STR\" '{$1 = $1; print}'だとOFS内のバックスラッシュが解釈されてしまう。\ncutのデリミタは1文字である必要がある。",
"sig": "37f31c65fd872c5b0ba6a04f62310107fae735fd41ca31f7b9d12095eaa0dfab5ae0995aa60924e8393953a12dab77402442d876beb7868ffef9c51c0b3c3632"
}