reading previous lines after reaching certain string マッチした前の行 3 行を表示したいというものです。 awk ではファイルハンドルとかでジャンプすることはできませんから、最初から配列に押し込めながら処理する手法が一般的で、そうした解法が示されています。 awk '{a[NR]=$0}$0~/string/{printf("%s\n%s\n%s\n",a[NR-3],a[NR-2],a[NR-1])}' file
![マッチした前の行の表示 - 日本 GNU AWK ユーザー会 0.2](https://cdn-ak-scissors.b.st-hatena.com/image/square/8ecea529f1588df529e5efdebdbb369f58e18041/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2FR%2FRocco%2F20071005%2F20071005231714.png)
awkという、古くからのスクリプト言語がある。(1977年生まれ。読み方は「オーク」である。エイ・ダブリュ・ケイではない)man awkをPDFに変換してみると、たったの3ページ強しかない。 $ man -t awk|pstopdf -i -o ~/Downloads/awk.pdf とてもシンプルな言語仕様ではあるが、awkには必要十分な表現力がある。特にテキストを処理する場面においては、最小限のシンプルな記述で、気の利いた処理を素早くこなす。無駄のないawkワンライナーを見ると、ある種の感動を覚える。awk以降に生まれたスクリプト言語は、少なからずawkの影響を受けていると思われる。 awkを知ることで、間違いなく幸福度は上がると思う。いつかきっと「知ってて良かった」と思える時が来るはず。もっともっと、awkを知りたくなってきた。 基本動作 awkの基本動作は、とってもシンプルである。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く