行と列の多い区切りファイル()がある場合data.txt
:
346 dfd asw 34
565 sd wdew 34
667 ffg wew 23
473 sa as 21
533 jhf qwe 54
抽出したい行番号を含む他のファイル(positions.txt
)
3
5
8
positions.txt
このファイルを使用してその場所を抽出するにはどうすればよいですかdata.txt
?以下は私が期待する結果の例です。
667 ffg wew 23
533 jhf qwe 54
ベストアンサー1
簡単にawk
:
awk 'NR==FNR{ pos[$1]; next }FNR in pos' positions.txt data.txt
NR==FNR{ ... }
- 最初の入力ファイル(例positions.txt
:)を処理します。pos[$1]
- 累積位置(レコード数)を配列キーにpos
設定next
- 次のレコードに移動
FNR in pos
- 2番目の入力ファイルを処理するときdata.txt
(FNR
現在の入力ファイルから読み取られたレコード数を示す)、現在のレコード番号が位置FNR
配列にある場合にのみレコードを印刷するpos
(キーで検索)
出力例:
667 ffg wew 23
533 jhf qwe 54
...