awk:文件2中的打印字符串与字符串文件2不匹配
我有两个带有逗号分隔值的文件,我想删除文件1中与文件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++) {
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设置为分隔记录的值,然后用一个文件中的记录填充一个数组,然后检查该数组中是否已存在另一个文件中的每个记录。