1

我有一个文件numbers.txt,每行都包含一个数字。

我想使用该文件打印出文件中的行lines.txt,即与中的数字对应的行numbers.txt

这可以通过awkUnix 命令行或其他方式直接在 Unix 命令行中完成吗?

例子:

numbers.txt

1
2
4
6

lines.txt

1: line one
2: line two
3: line three
...
6: line six

输出:

1: line one
2: line two
4: line four
6: line six
4

4 回答 4

3

try this awk one-liner:

awk 'NR==FNR{n[$0];next}FNR in n' numbers.txt lines.txt
于 2013-05-22T10:10:41.000 回答
1

您可以使用此命令n在文件中输出行lines.txt

 cat lines.txt | head -<n> | tail -1

然后对numbers.txtas your中的所有行执行此操作n

 for n in `cat numbers.txt`; do cat lines.txt | head -$n | tail -1; done;

注意:如果没有lines.txt对应数字的行,则输出文件的最后一行;你需要一个额外的测试来检查和避免这种情况。

于 2013-05-22T10:13:18.633 回答
1
 parallel -ka numbers.txt 'sed -n {}p lines.txt'

这是有关并行的更多信息

于 2013-05-22T10:35:58.930 回答
0
awk -F":" 'FNR=NR{a[$0];next}($1 in a){print}' numbers.txt lines.txt
于 2013-05-22T10:45:26.870 回答