我有两个逗号分隔值的文件,我想删除file1中与文件2中的字符串匹配的所有字符串。
file1:
soap,cosmetics,june,hello,good
file2:
june,hello
output:
soap,cosmetics,good
我尝试了这个,但没有工作。我不确定我哪里出错了。任何帮助表示赞赏。
BEGIN {
FS=","
}
NR==FNR {
a[NR]=$0
next
}
{
for (j=1;j<=NF;j++) {
split($0, d, ",")
if (d[j] in a == 0) {
line = (line ? line "," : "") d[j]
}
}
print line
line = ""
}
答案 0 :(得分:3)
这是使用awk
的一种方式。像:
awk -f script.awk file2 file1
script.awk
的内容:
BEGIN {
FS=","
}
FNR==NR {
for(i=1;i<=NF;i++) {
a[$i]
}
next
}
{
for(j=1;j<=NF;j++) {
if (!($j in a)) {
r = (r ? r FS : "") $j
}
}
}
END {
print r
}
结果:
soap,cosmetics,good
或者,这是单行:
awk -F, 'FNR==NR { for(i=1;i<=NF;i++) a[$i]; next } { for(j=1;j<=NF;j++) if (!($j in a)) r = (r ? r FS : "") $j } END { print r }' file2 file1
答案 1 :(得分:1)
$ gawk -v RS='[,\n]' 'NR==FNR{a[$0];next} !($0 in a){o=o s $0;s=","} END{print o}' file2 file1
soap,cosmetics,good