如果字段$4 (文件F11.txt)为空,则将F11.txt的第二个字段和F22.txt的第一个字段打印为"NotFound“,如果字段$4 (文件F11.txt)为空,则打印F11.txt的行。
Inputs:
F11.txt
a,10,zzz
b,20,zzz,yyy
c,50,zzz
F22.txt
10,yyy
20,yyy
30,yyy
40,yyy尝试了下面的命令,谢谢您的帮助。
awk -F "," 'NR==FNR{a[$1]=$0;next}{print $0 "," (a[$2]?"Available":"NotFound") }' f22.txt f11.txt得到以下输出
a,10,zzz,Available
b,20,zzz,yyy,Available
c,50,zzz,NotFound其中,作为b,20,zzz,yyy是匹配的情况,但不想覆盖为“可用”为$4不是空(空)
预期产出:
a,10,zzz,Avilable
b,20,zzz,yyy
c,50,zzz,NotFound发布于 2014-05-29 18:12:33
我相信下面的剧本能做你想做的事
BEGIN {
FS=OFS=","
}
NR==FNR {
a[$1]=$0
next
}
!$4 {
$4 = (a[$2] ? "Available" : "NotFound")
}
1更新后的脚本,以明确地检查空的第四个字段(允许用空的第四个字段进行更长的行)。再次更新以替换空的第四个字段,而不是追加字段。
发布于 2014-05-29 19:43:30
试试这个:
awk -F, '
NR==FNR {a[$1]=$0;next}
NF==3 {print $0($2 in a?",Available":",NotFound");next}1
' F22.txt F11.txt
a,10,zzz,Available
b,20,zzz,yyy
c,50,zzz,NotFoundhttps://stackoverflow.com/questions/23939736
复制相似问题