awkを使う

awkを使う

whileループでファイルの終わりを確認する方法を知りたいです。ここで私がやっていることは、「pineapple」、「apple」、「onion」、「orange」などのような単語がある場合です。 grepコマンドを使用して特定の単語を含む行を見つけ、「windows」の説明を作成したいと思います。 。たとえば、を使用すると、grep 'a' 'file'「パイナップル」、「リンゴ」、「オレンジ」が検索されます。そして最後に、「パイナップル、窓、りんご、窓、オレンジ、窓」のようなものを印刷したいと思います。だからwhileまたはforループでいくつかの条件を設定したいと思います。どんな助けでも大変感謝します。

編集:例を入力

apple
banana
pineapple
orange
mandu
ricecake
meat
juice
milk
onion
green onion

grepコマンドを使用したときに予想される出力 -->grep 'a' 'file name'

apple
window
banana
window
pineapple
window
orange
window
mandu
window
ricecake
window
meat
window

ベストアンサー1

awkを使う

window一致する各行の後に印刷しますa

$ awk '/a/{print; print "window"}' filename
apple
window
banana
window
pineapple
window
orange
window
mandu
window
ricecake
window
meat
window

どのように動作しますか?

/a/{...}正規表現に一致する行を選択してくださいa。各行に対して中括弧で囲まれたコマンドが実行されます。

print一致する内容を含む行の印刷

print "window"印刷window

sedを使う

$ sed -n '/a/{s/$/\nwindow/; p}' filename
apple
window
banana
window
pineapple
window
orange
window
mandu
window
ricecake
window
meat
window

どのように動作しますか?

-n明示的に要求されない限り、印刷しないようにsedに指示します。

/a/{...}正規表現に一致する行を選択してくださいa。この行の場合、中かっこで囲まれたコマンドが実行されます。

s/$/\nwindow/window現在行の末尾に改行文字を追加します。

p印刷。

おすすめ記事