我有一个包含20000行的文件(myFile
)和另一个文件(myIndex
),其中包含必须从myFile
中提取的行:
4
10
1200
..
..
我想用sed
提取这些行:
sed '10!d' myFile
如何将文件名替换为4,10
,如下所示:
sed 'myIndex!d' myFile
或者awk中有类似的功能吗?
答案 0 :(得分:1)
尝试使用GNU sed:
sed -nf <(sed 's/.*/&p/' myIndex) myFile
-n
:禁止自动打印图案空间
-f
:将脚本文件的内容添加到要执行的命令
<(...)
:bash&#39; Process Substitution
答案 1 :(得分:1)
您可以使用awk:
awk 'NR==FNR{i[$0];next}i[FNR]' index file
只要我们在NR==FNR
时阅读第一个内容, index
就成立了。我们将所有行号存储在数组i
中。在剩余的输入中,我们检查行号是否存储在i
中。如果是这样,awk会打印该行。