awk:文件2中的打印字符串与字符串文件2不匹配

awk:文件2中的打印字符串与字符串文件2不匹配,awk,Awk,我有两个带有逗号分隔值的文件,我想删除文件1中与文件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++) {

我有两个带有逗号分隔值的文件,我想删除文件1中与文件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 = ""
}
开始{
FS=“,”
}
NR==FNR{
a[NR]=$0
下一个
}
{

对于(j=1;j这里有一种使用
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
}
或者,这里有一个班轮:

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

awk-F,'FNR==NR{for(i=1;i这里有一种使用
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
}
或者,这里有一个班轮:

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

awk-F,'FNR==NR{for(i=1;i+1)你很接近。只是一些小事情真的(重新策略)。请参阅我的答案。解决此类问题的方法是将RS设置为任何分隔记录的值,然后用一个文件中的记录填充一个数组,然后检查另一个文件中的每个记录是否已存在于该数组中。+1您很接近。只需做一些小事情(重新策略)。请参阅我的答案。解决此类问题的方法是将RS设置为分隔记录的值,然后用一个文件中的记录填充一个数组,然后检查该数组中是否已存在另一个文件中的每个记录。