【发布时间】:2016-08-31 02:54:37
【问题描述】:
我有两个文件
条件.txt
abcd
efgh
logs.txt
efgh
ijkl
mnop
qrst
我期望输出是:
ijkl
mnop
qrst
实际输出:
efgh
ijkl
ijkl
mnop
mnop
qrst
qrst
这是我到目前为止工作的代码
func(){
while read condition
do
if [[ $line = $condition ]] ; then
:
else
echo "$line";
done < condition.txt
}
while read line
do
func $line
done < log.txt
【问题讨论】:
-
您的代码每次与
condition.txt文件中的任何一行不匹配时都会打印测试行。如果您向condition.txt添加了另外两行(例如pqrst和wxyz),您会看到除abcd之外的每一行出现4 次(您会看到3 次出现)。只有当它与condition.txt中的任何行都不匹配时,您才应该打印该行。但是在答案中使用fgrep(或grep -F)的建议要好得多。
标签: linux shell unix ubuntu filter