我有两个文件,我需要从 F1 中获取 Field-11 的最后 6 个字符并在 F2 上查找,如果它匹配,我需要用 F2 的 Field-1 和 Filed-2 替换 F1 的 Field-9。
文件1:
12345||||||756432101000||756432||756432101000||
aaaaa||||||986754812345||986754||986754812345||
ccccc||||||134567222222||134567||134567222222||
文件2:
101000|AAAA
812345|20030
预期的输出是:
12345||||||756432101000||101000AAAA ||756432101000||
aaaaa||||||986754812345||81234520030||986754812345||
ccccc||||||134567222222||134567||134567222222||
我试过:
awk -F '|' -v OFS='|' 'NR==FNR{a[$1,$2];next} {b=substr($11,length($11)-7)} b in a {$9=a[$1,$2]}1'
最佳答案
我会以这种方式将其写成文件中的完整脚本,而不是单行代码:
#!/usr/bin/awk -f
BEGIN {
FS = "|";
OFS = FS;
}
NR == FNR { # second file: the replacements to use
map[$1] = $2
next;
}
{ # first file specified: the main file to manipulate
b = substr($11,length($11)-5);
if (map[b]) {
$9 = b map[b]
}
print
}
关于linux - 如何使用 substr 比较替换字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36929705/