2

みなさん、こんにちは。

次の目的でif条件を作成したいと思います。

2つのファイルがある場合、スクリプトはfile1の単語(変数$ word2testに配置)をチェックし、file2に存在する場合(各単語は変数$ wordINlistに配置)何もしません | 単語がfile2にない場合は、stdoutに出力します

私の最初のアプローチは次のとおりです。

if ! [[ "$word2test" =~ "$wordINlist" ]] ; then
    echo $word2test
fi

提案を事前に感謝します

4

3 に答える 3

3

この単純なbashサンプルスクリプトを試してください:

word=foobar
grep -q "\<$word\>" FILE || echo "$word is *not* in FILE"

正規表現の別の方法:

word=foobar
grep -q "^$word *$" FILE || echo "$word is *not* in FILE"
于 2012-05-28T18:02:21.933 に答える
1

配列であると仮定すると$wordINlist(「リスト」と言いますが、配列を意味すると仮定します)、次のように反復できます。

for item in ${wordINlist[@]}; do
  [[ $item == $word2test ]] || echo $word2test
done

がファイルの場合$wordINlist、それを簡単にgrepできます。

egrep -q "\b${word2test}\b" "$wordINlist" || echo "$word2test"

一致するegrepものが見つかるとtrueを返し、そうでない場合はfalseを返します。つまり、「一致するものが見つかったか、エコーする$word2test」ということです。

含まれているアイテムと含まれていfile1ないアイテムを確認するだけの場合は、次file2を使用しますcomm

comm -23 <(sort -u file1) <(sort -u file2)
于 2012-05-28T17:48:56.133 に答える
1

ファイルが1行に1語の単純なリストである場合は、次のことを試してください。

grep -Fvf file2 file1

また

join -v 1 <(sort file1) <(sort file2)
于 2012-05-28T18:10:54.813 に答える