我有两个文件,一个输入文件 FileA 和一个参考文件 RefFile 。 RefFile 包含我想在 FileA 的每一行中找到的字符串。 FileA 中找不到的每个字符串都应打印" NULL "代替。
FILEA:
MIN=0000;MSI=1111;FLA=2222;DAG=9999
MIN=000;FLA=2222
RefFile:
MIN
MSI
FLA
预期输出:
MIN=0000;MSI=1111;FLA=2222
MIN=000;NULL;FLA=2222
到目前为止,这是我的剧本:
awk -F";" -v key="MSI" '$1 ~ key {$1=$1; print}' FileA
顺便说一下,我刚刚开始使用shell脚本。谢谢。
答案 0 :(得分:1)
在awk中(完全重写):
$ cat program.awk
BEGIN { FS=OFS=";" }
NR==FNR { a[++i]=$1; next }
{
d="" # print buffer
delete b # record buffer =
for(j=1;j<=NF;j++){
split($j,c,"=")
b[c[1]]=$j # b[key]=field
}
for(j=1;j<=i;j++) # for all Refs
d=d (d==""?"":OFS) (a[j] in b?b[a[j]]:"NULL") # gather buffer
print d
}
$ awk -f program.awk RefFile FileA
MIN=0000;MSI=1111;FLA=2222
MIN=000;NULL;FLA=2222