根据行号列表从文件中读取行并将输出写入实用程序

bin*_*ger 6 pipe shell-script text-processing

我有一个包含要从另一个文件读取的行列表的文件。我想将这些行输出到一个实用程序 ( grep),让我可以读取整行并从中提取信息。带有行的文件如下所示:

cat input.txt
2088
2089
2095
2096
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我坚持这一点。我知道sed可以将特定的行号作为参数,但我无法弄清楚如何将其放入一个变量中以提供给它。

Sté*_*las 5

awk 'NR==FNR{linesToPrint[$0];next}
     FNR in linesToPrint' line-numbers.txt file.txt
Run Code Online (Sandbox Code Playgroud)


mic*_*has 2

如果我正确理解你的问题,这样的事情应该有效:

for i in $(cat numbers.txt); do cat lines.txt|tail -n +$i|head -n 1; done
Run Code Online (Sandbox Code Playgroud)

对于文件“numbers.txt”中的每个数字,它提取另一个文件的相应行并打印它。

sed和是一样的,xargs看起来像这样:

xargs -i sed "{}q;d" lines.txt <numbers.txt
Run Code Online (Sandbox Code Playgroud)