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

Awk 从文件(字符串)中提取特定行(给定索引),awk,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} {fo

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


有更优雅的解决方案吗?

呵呵,你闭着眼睛写的,不是吗?比我从www上搜刮的版本快得多!谢谢如果要提取反向选择:awk'NR==FNR{a[$0];a==0'idx.txt行中的next}FNR。txt@xeon或者更简单的
awk'NR==FNR{a[$0];next}!(a中的FNR)“idx.txt lines.txt
awk 'NR==FNR{a[$0];next} FNR in a' idx.txt lines.txt