我有两个巨大的序列文件,我想在其中从文件 2 中的文件 1 中提取相同的行号
I have two huge sequencefiles where i want to extract the same linenumbers from file1 in file2
我有我的两个序列文件,并且我有来自 file1 的 rows/lines 感兴趣的列表。我想提取与 file1 中具有相同行号的行。该列表只有 1 列数字。
我尝试在循环中使用 awk,但我得到的只是一个空文件作为输出文件。
我的代码如下所示:
for i in <listfile>;
do awk -F lnr="$i" 'NR==lnr' <file2> > outputfile
输出文件已创建,但为空。
我找不到以前问过的这个问题,但很抱歉浪费你的时间
给定输入...
for i in {a..z}; do echo $i; done > /tmp/list-1
for i in {z..a}; do echo $i; done > /tmp/list-2
每个文件的当前行将存储在 FNR 中,因此您可以使用它。
$ awk -v a=4 -v b=9 'FNR >= a && FNR <= b { print FILENAME, NR, FNR, [=11=] }' /tmp/list-*
示例输出:
/tmp/list-1 4 4 d
/tmp/list-1 5 5 e
/tmp/list-1 6 6 f
/tmp/list-1 7 7 g
/tmp/list-1 8 8 h
/tmp/list-1 9 9 i
/tmp/list-2 30 4 w
/tmp/list-2 31 5 v
/tmp/list-2 32 6 u
/tmp/list-2 33 7 t
/tmp/list-2 34 8 s
/tmp/list-2 35 9 r
如果我理解这个问题 - 文件 1 有一个“行号”列表,并且您希望在文件 2 中打印这些行:
awk 'FNR==NR{line[]=1;next}{if(line[FNR]==1)print FNR, [=10=]}' file1 file2
我有我的两个序列文件,并且我有来自 file1 的 rows/lines 感兴趣的列表。我想提取与 file1 中具有相同行号的行。该列表只有 1 列数字。
我尝试在循环中使用 awk,但我得到的只是一个空文件作为输出文件。
我的代码如下所示:
for i in <listfile>;
do awk -F lnr="$i" 'NR==lnr' <file2> > outputfile
输出文件已创建,但为空。
我找不到以前问过的这个问题,但很抱歉浪费你的时间
给定输入...
for i in {a..z}; do echo $i; done > /tmp/list-1
for i in {z..a}; do echo $i; done > /tmp/list-2
每个文件的当前行将存储在 FNR 中,因此您可以使用它。
$ awk -v a=4 -v b=9 'FNR >= a && FNR <= b { print FILENAME, NR, FNR, [=11=] }' /tmp/list-*
示例输出:
/tmp/list-1 4 4 d
/tmp/list-1 5 5 e
/tmp/list-1 6 6 f
/tmp/list-1 7 7 g
/tmp/list-1 8 8 h
/tmp/list-1 9 9 i
/tmp/list-2 30 4 w
/tmp/list-2 31 5 v
/tmp/list-2 32 6 u
/tmp/list-2 33 7 t
/tmp/list-2 34 8 s
/tmp/list-2 35 9 r
如果我理解这个问题 - 文件 1 有一个“行号”列表,并且您希望在文件 2 中打印这些行:
awk 'FNR==NR{line[]=1;next}{if(line[FNR]==1)print FNR, [=10=]}' file1 file2