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
印刷。