用来自不同文件linux的模式替换条件为另一列的条件值

时间:2018-08-20 13:39:44

标签: bash awk sed

我想更改一个文件的第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列的值。

谢谢

0 个答案:

没有答案