次の出力を返すシェルスクリプト(test1.sh)があります。
Employee ID emp Type return type Admin User
us321000034006755 ITdept access Itadminuser
次のコマンドを使用したので、出力にITdept文字列が含まれていることを確認したいと思います。
if ./test1.sh | grep -q 'ITdept';
then
echo "found"
else
echo "Not found"
fi
これに加えて、従業員ID us321000034006755文字列も確認したいと思います。これは、使用中のコマンドで有益な結果を返さずにこれを行う方法がわからないためです。私は何を逃したことがありませんか?どんな提案でもいいでしょう。
ベストアンサー1
出力に文字列が含まれているとしますus321000034006755(separator)ITdept
。
if cmd | grep -q '[[:<:]]us321000034006755[[:>:]][[:space:]]*[[:<:]]ITdept[[:>:]]'; then
...
fi
変数に2つの部分文字列がある場合:
if cmd | grep -q "[[:<:]]$user_id[[:>:]][[:space:]]*[[:<:]]$user_dept[[:>:]]"; then
...
fi
単語の境界で一致[[:<:]]
します。[[:>:]]
以下を使用すると、これを行う方がはるかにawk
簡単になります。Roman Perechrestが提案したとおりまたは
cmd | awk '$1 == "us321000034006755" && $2 == "ITdept" { print "found"; exit } END { print "not found" }'