AWK が gsub の改行文字 \n と一致しません。

AWK が gsub の改行文字 \n と一致しません。

\nAWKは改行文字と一致しません。gsub()
下の「イチゴ」フルーツアイテムを変更してください。
sed と一緒に使うのもいいですね。

\nこのスクリプトが示すように、以下を無視します。

cat << 'EOF' > ~/src
apple
fruit
strawberry
fruit
orange
fruit
blackberry
EOF
cat << 'EOF' > ~/scp.sh
#!/bin/bash
cat ~/src | awk '{ gsub("strawberry\nfruit", "strawberry\nfruitIsRed"); print }' > ~/trg
EOF
sh ~/scp.sh
diff ~/src ~/trg
# files are equals

答え1

awkのデフォルトのRS(レコード区切り記号)は\newlineなので、awkはそれを置き換えるどこでもewlineを見ることができないので、\n改行文字を認識するにはRSを別のものに設定する必要があります。 1つの方法は、RSを空の文字列に設定することです(レコードがスペースで区切られていることを意味します)。改行の代わりに行):

awk -v RS= '{ "do stuffs" }'

だから具体的ではない。gsub()RSのみに依存します。

関連情報