2014-09-12 21 views
0

我有兩個文件:lines.txt和idx.txt提取特定行(指數給出)從文件(串)

lines.txt: 
aaa ggg sss 
ww ee ttt 
qq ee gg ccc 
vvv bb b www ee 
ppp dff f gg qq 
pp qq ee rr tt 
ww qq ee rrr 

idx.txt 
2 
4 
5 

我想用「idx.txt」來提取這些具體的行來自「lines.txt」文件。這些文件相當大(幾十MB)。目前我使用下面的線,但它是緩慢:

awk 'NR=FNR{arr[FNR]=$0; next} {for(i in arr) if(i==$1) print arr[i]}' lines.txt idx.txt 

我生成使用腳本「idx.txt」文件,因此線的提取要快。

有沒有人更優雅的解決方案?

回答

2
awk 'NR==FNR{a[$0];next} FNR in a' idx.txt lines.txt 
+1

你是不是寫了那封閉的眼睛? – 2014-09-12 23:13:38

+1

花了很長時間來閱讀這個問題;-) – 2014-09-12 23:14:23

+1

相比我從www版本刮起來的速度更快!謝謝! – 2014-09-12 23:15:14