这似乎有一个简单的解决方案,但我被困住了。我想在密钥文件中查找主文件的第二列,对于任何匹配的密钥,仅打印前两列,但打印其余的整个记录。我有一个工作脚本,但它打印匹配键的整行。你能帮忙吗?
awk 'FNR == NR {key[$1]; next} $2 in key {print $1,$2}' keyfile mainfile > outfile
主文件:
PSHELL 10 136514 0.7
PSHELL 15 136514 0.7
PSHELL 20 136513 2.0
PSHELL 30 13571 1.7
keyfile:
10
30
outfile:
PSHELL 10
PSHELL 15 136514 0.7
PSHELL 20 136513 2.0
PSHELL 30
你可以用这个awk
:
awk 'FNR == NR {key[$1]; next} {print ($2 in key ? $1 OFS $2 : $0)}' keyfile mainfile | column -t > outfile
cat outfile
PSHELL 10
PSHELL 15 136514 0.7
PSHELL 20 136513 2.0
PSHELL 30
Here:
- 使用三元运算来打印
$1 OFS $2
当我们发现$2
in key
数组,否则我们打印$0
.
- used
column -t
用于表格输出
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)