元のスクリプトは正しい行にありましたが、複雑すぎました。
echo -e "foo\n-- \nbar" | gawk '/^--\ / { x++ } { if (x==0) print}'
変数は自動的に作成され、ゼロに設定されawk
ます (そのため、etc は必要ありません-v x=0
)。「ダブルダッシュを見つける」コードは問題ありませんでした。セミコロンは不要です (せいぜい)。はIF (x == 0) {print}
明らかに奇妙です。Mac OS X 10.7.5のawk
はそれを受け入れますが、それが何をしていたのかわかりません。x
置換アクションはすべての行に対して行われ、印刷前にゼロかどうかをテストします。
個人的には、おそらくこれに使用sed
します:
echo -e "foo\n-- \nbar" | sed '/^--/q'
gniourf_gniourfが示唆するように私のsed
コマンドを修正します:
echo -e "foo\n-- \nbar" | sed -n '/^--/q;p'
sputnickの回答awk
で示されているコマンドを使用して、それを模倣できます。
echo -e "foo\n-- \nbar" | awk '/^--/ {exit} 1'
1 はすべての行に一致し (常に真)、デフォルトのアクションである「print $0」をトリガーします。次のように書くこともできます。
echo -e "foo\n-- \nbar" | awk '/^--/ {exit} {print}'