(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Linux】awkで先頭行と末尾の行を指定してその間を表示するワンライナー

スポンサーリンク

やりたいこと

以下のようなテキストファイルがあった場合に

$ cat test.txt
H
e
l
l
o
W
o
r
l
d

4行目~7行目の以下部分だけを表示したい。

l
o
W
o

|

コマンド実行状況
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
$ awk --version
GNU Awk 5.0.1...

ワンライナー

$ cat test.txt | awk '{if(4<=NR && NR <= 7) print $0}'

標準出力はこのようになります。

l
o
W
o

以下、補足です。

補足

行番号に紐づく操作をしたい場合はNRを利用します。

例えば以下ではNRが3の倍数であるか否かで条件分岐だせていますが

今回は同じロジックで論理積を取って挟み込むことで値を絞っています。

また、指定する数値を変数に置き換えて利用することも可能です。

$ cat test.txt | awk '{if(hoge<=NR && NR <= 7) print $0}' hoge=5
o
W
o

シェルスクリプトにして利用すれば、変数は動的に変化させることができるので便利です。

以上、ご参考になれば幸いです。