\n
AWKは改行文字と一致しません。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(レコード区切り記号)は\n
ewlineなので、awkはそれを置き換えるどこでもewlineを見ることができないので、\n
改行文字を認識するにはRSを別のものに設定する必要があります。 1つの方法は、RSを空の文字列に設定することです(レコードがスペースで区切られていることを意味します)。改行の代わりに行):
awk -v RS= '{ "do stuffs" }'
だから具体的ではない。gsub()RSのみに依存します。