大家好日子,
我希望以下列目标制作if条件:
有两个文件,如果在file2中退出(每个单词位于变量$ wordINlist中),则脚本检查file1的单词(在变量$ word2test中找到) | 如果单词不在file2中,则将其打印到stdout
我的第一个方法是:
if ! [[ "$word2test" =~ "$wordINlist" ]] ; then
echo $word2test
fi
提前感谢任何建议
答案 0 :(得分:2)
试试这个简单的bash示例脚本:
word=foobar
grep -q "\<$word\>" FILE || echo "$word is *not* in FILE"
使用REGEX的另一种方式:
word=foobar
grep -q "^$word *$" FILE || echo "$word is *not* in FILE"
答案 1 :(得分:1)
假设$wordINlist
是一个数组(你说“列表”,但我假设你的意思是数组),你可以像这样迭代它:
for item in ${wordINlist[@]}; do
[[ $item == $word2test ]] || echo $word2test
done
如果$wordINlist
是一个文件,那么你可以简单地浏览它:
egrep -q "\b${word2test}\b" "$wordINlist" || echo "$word2test"
当egrep
找到匹配项时,它返回true,否则返回false。所以简单地说,“要么找到匹配,要么回声$word2test
”
如果你想要做的只是file1
而不是file2
中的哪些项目,请使用comm
:
comm -23 <(sort -u file1) <(sort -u file2)
答案 2 :(得分:1)
如果您的文件是每行一个单词的简单列表,请尝试以下操作:
grep -Fvf file2 file1
或
join -v 1 <(sort file1) <(sort file2)