行番号を含むファイルの行範囲を印刷します。

行番号を含むファイルの行範囲を印刷します。

sedファイルの複数行を印刷するオネライナーがあります。

sed -n '10,20p' file.txt

上記のコードは、file.txtの10行から20行まで印刷します。

しかし、行番号をどのように印刷できますか?

ベストアンサー1

努力するawk

awk 'FNR==10,FNR==20 {print FNR ":" $0}' file.txt

これにより、行番号、コロン、および10〜20の範囲の行が印刷されます。

または20行目以降の読み取りを停止します。

awk 'FNR >= 10 {print FNR ":" $0}; FNR == 20 {exit}' file.txt

複数のファイルを処理し、実装がawkこのディレクティブをnextfileサポートしている場合:

awk -v OFS=: 'FNR >= 10 {print FILENAME, FNR, $0}; FNR == 20 {nextfile}' ./*.txt

(現在のファイル名もここに印刷されます。)

おすすめ記事