これが可能かどうかわかりませんが、ここではわかります-ファイルから複数の行を一度に取り出す
私は数字のリストを持っています。
cat list
出力 -
1
22
53
75
そして、私は500行(file.txtなど)とセカンダリファイルを持っています。 そのファイルから第1、第22、第53、第75行を選びたいと思います。私は現在、
for i in `cat list`; do awk "NR==$i" file.txt ; done
これは動作しますが、それは(私の実際のファイルは50K +のラインを持っている)本当に遅いですが - 試してみた何
。 より効率的なソリューションがあるのかどうか疑問に思っていました。おそらく、リストを読んで、4つのプロセスではなく、1つのプロセスですべての行を引き出す方法です。
'sedの-n -e '1P' '53P' -e '75P' filename' -e -e '22P' 非常に小さい場合、別の
awk
です。または、 '$ listのiのためにループする。 sed -n "$ {i} p" file.txtを実行します。 done' –'list'がファイル(例えば' list.txt')であれば 'read -r num while 'を使います。 sed -n "$ {num} p" file.txtを実行します。 done "" $ list.txt "' –