1

numbers.txtすべての行に数字を含むファイルがあります。

lines.txtそのファイルを使用して、ファイル内の行、つまり の番号に対応する行を出力したいと考えていますnumbers.txt

awkこれは、または 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

この awk ワンライナーを試してください:

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.txtます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 に答える