从文件中提取特定行(给定的索引)(字符串)

时间:2014-09-12 23:04:22

标签: awk

我有两个文件: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”文件,因此提取行应该很快。

有人更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:2)

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