我想更改一个文件的第1列的值,具体取决于其他文件中是否存在第2列的值。像这样:
文件1:
m maria
m alexander
m manuel
m cristian
m luis
文件2:
alexander
manuel
luis
Output.file:
m maria
s alexander
s manuel
m cristian
s luis
长时间阅读后,我想到了:
awk 'NR==FNR {a[$1]=$1;next} $2 in a {sub(/m/,"s")} 1' file2 file1
这有点奏效,但是我没有得到预期的行数...您能告诉我我缺少什么吗?
此问题已被标记为重复,但并非如此。 (除非使用join
解决了包括两个输入文件和一个输出文件的所有问题)。
重复项的核心问题是每一行由2列标识(两种情况下比较文件2)。这不是这里的问题,每一行只有一个标识列。
如果仅查看输出文件,您会注意到“重复”输出是已过滤的数据集,其中删除了几行。虽然此处的输出是相同的数据集,但是根据文件2中是否包含第2列的值,有选择地替换了第1列的值。
谢谢