我在一个文件中有一些原始数据,例如 File1.txt
Colt McCoy QB CLE 135 222 1576 6 9 60.8% 74.51
Josh Freeman QB TB 291 474 3451 25 6 61.4% 95.9
Matt Cassel QB KC 262 450 3116 27 7 58.2% 93.0
Michael Vick QB PHI 233 372 3018 21 6 62.6% 100.2
Matt Schaub QB HOU 365 574 4370 24 12 63.6% 92.0
文件 2.txt 有一个名称列表,每行一个名称
Josh
Matt
我想获得名称和行号的输出。对于上面的例子,它将是:
Josh: 2
Matt: 3,5
我有一个命令为我提供名称列表和行号,但我想以上面所需的格式打印它。我当前的命令是
awk '{print $1, NR}' file1.txt | grep -f file2.txt
表明
Josh 2
Matt 3
Matt 5
我该怎么做才能使其打印成所需的格式?
答案1
awk
单独可以做到这一点:
awk 'NR==FNR{seen[$1]=seen[$1]","NR; next};
{if ($1 in seen){printf("%s: %s\n", $1, substr(seen[$1], 2))}}' file2 file1
答案2
您可以使用diff -y file1 file2
。
它将为您提供两个文件的并排输出。它还具有其他选项来解析您的输出。查看手册页以获得更多选择。