我使用file1
作为file2
的数据来源,现在我需要确保来自file1
的每一行文字都出现某处 file2
(并找出哪些行丢失,如果有的话)。可能需要注意的是,虽然file1
每行有一个搜索字词,但file2
中的任何位置可以包含在单词的中间。如果匹配不区分大小写也会有所帮助 - 如果file2
中的文本在所有大写中都是偶数,则无关紧要。
file1
中的行包含空格和各种其他特殊字符,例如--
。
答案 0 :(得分:10)
if grep -Fqvf file2 file1; then
echo $"There are lines in file1 that don’t occur in file2."
fi
Grep选项意味着:
-F, --fixed-strings PATTERN is a set of newline-separated fixed strings
-f, --file=FILE obtain PATTERN from FILE
-v, --invert-match select non-matching lines
-q, --quiet, --silent suppress all normal output
答案 1 :(得分:3)
你可以尝试
awk -f a.awk file1 file2
其中a.awk
是
BEGIN { IGNORECASE=1 }
NR==FNR {
a[$0]++
next
}
{
for (i in a)
if (index($0,i))
delete a[i]
}
END {
for (i in a)
print i
}