我有两个文件,我想将它们配对并保存第一个文件的索引,如果它们匹配,则与第二个文件的相应索引一起保存。
例如:
文本文件1
a
b
c
d
e
d
e
c
文本文件2
c
e
e
d
b
a
输出
(1,6) (2,5) (3,1) (4,4) (5,3) (5,2) (6,4) (7,3) (7,2) (8,1)
我尝试使用 nl 对行进行编号,加入以加入对并排序以对进行排序,但我不明白。
使用 awk,将第二个文件读入数组并在读取第一个文件时遍历它以打印匹配项。
awk 'NR==FNR { a[$0,++n[$0]]=NR; next } ($0 in n) { for (i=1;i<=n[$0];i++) printf "(%d, %d)n",FNR,a[$0,i] }' file2 file1
您能否尝试以下操作。
awk '
FNR==NR{
a[$0,++b[$0]]=FNR
next
}
{
if(b[$0]>=++c[$0]){
if(b[$0]==1){
print "("FNR","a[$0,++d[$0]]")"
}
else{
for(i=1;i<=b[$0];i++){
print "("FNR","a[$0,i]")"
}
}
}
else{
c[$0]--
print "("FNR","a[$0,d[$0]]?a[$0,d[$0]]:0")"
}
}
' Input_file2 Input_file1
输出将如下所示。
(1,6)
(2,5)
(3,1)
(4,4)
(5,2)
(5,3)
(6,4)
(7,2)
(7,3)
(8,1)