我遇到了一个小问题,试图使用awk替换列中的一些字符串,使用另一个文件作为替换的引用。当第二列的字符串与File2的第一列的字符串匹配时,我希望将File1第三列中的字符串替换为第二列的字符串。
以下是文件和希望得到的更清楚的结果。
File1
AAA XZA
AAB XSZ
AAC XWQ
BAA XCDFile2
ADZ-4 128720 AAA 451351351 5135 jhgt 215
SZQ-2 036051 AAB 55654 grt
KFD-9 036266 AAC
ODS-10 036267 AAA 57321
POS-11 036268 AAC 8435435 764 frd期望产出:
ADZ-4 128720 XZA 451351351 5135 jhgt 215
SZQ-2 036051 XSZ 55654 grt
KFD-9 036266 XWQ
ODS-10 036267 XZA 57321
POS-11 036268 XWQ 8435435 764 frd我尝试了下面的命令行。
awk 'FNR==NR{a[$1]=$2;next} {if ($3 in a){$3=a[1]}; print $0}' File1 File2 但是我很肯定我没有在第二个弯刹车中做什么,因为它打印出一个文件,第三列删除了。如果我有几个,我会很高兴地使用,我有500+的替代做……
任何帮助都将不胜感激,如果你能解释,让我从我的错误中吸取教训,我将非常感激。
发布于 2020-06-18 09:11:08
您没有以正确的方式引用关联数组。请更改:
...{if ($3 in a){$3=a[1]}; print $0...转入:
...{if ($3 in a){$3=a[$3]}; print $0数组a的键是AAA,AAB...而不是1,2,3...。
https://stackoverflow.com/questions/62446326
复制相似问题