ロジックはどのように書くのですか?
Test total=100
Test scored=80
Tests failed=0
ファイルに存在するTest total
かどうかを確認するには、bashファイルにスクリプトを作成する必要があります。 grepコマンドを使用する必要がありますが、この場合は新しい行を確認する方法は?Test scored
Tests failed=0
そして、100、80という数字は見つける必要はありません。直前のテキストです。
答え1
grep -e "Test total=[0-9][0-9]*$" -e "Test scored=[0-9][0-9]*$" -e "Tests failed=[0-9][0-9]*$" foofile
下記の入力の最初の3行だけを一致させたい場合を考えてください。
Test total=100
Test scored=80
Tests failed=0
Test total=100 alpha
Test scored=80 beta
Tests failed=0 gamma
Test total=
Test scored=
Tests failed=
答え2
bashとgrepを使用すると、関数内で複数のgrep呼び出しの戻り状態をテストできます。たとえば、次のようになります。
#!/usr/bin/env bash
failed_zero () {
grep -q "Test total" "$1" || grep -q "Test scored" "$1" || grep -q "Test failed=0" "$1"
return $?
}
# test first file name on command line
failed_zero $1
echo $?
答え3
努力する
found=$( egrep "Test total|Test scored|Tests failed" -c file )
if [ $found -eq 3 ]
then
## all three test
else
## some failed
fi
どこ
egrep
grep 拡張を許可します (例:|
(または) を使用)。-c
一致する行の数を提供します。$( )
コマンドの結果を変数として返します。