引数をファイルテキストと比較する(if句)

引数をファイルテキストと比較する(if句)

次の情報を含む単純なtxtファイルがあります。

"John;23124;Firefighter;[email protected]"
"Hannah;34241;Hairdresser;[email protected]"

私が望むのは、与えられたパラメータを比較してifステートメントを表現し、そのパラメータがファイルテキストのどの行に等しいかを確認することです。たとえば(「ジョン」23124「ファイアマン」)[Eメール保護]")は私が提供する引数であり、ファイルの最初の行と一致します。

試してみましたが、if[(cat filename.txt | grep $2 | wc -l) - gt 0]うまくいかないようです。

ベストアンサー1

完了に使用できますawk
ファイルがで区切られている場合は、パラメータを追加する必要が;あります-F ';'

cat yourfile | awk -F ';' '{print ($2>30000)? "foo" : "bar"}'

bar1行目(パラメータが低すぎる)
foo2行目を印刷します。

存在することを確認するには、$2次の手順を実行します。

cat yourfile | awk -F ';' '{print $2? "foo" : "bar"}'

特定のパターンがある行数を知りたい場合は、次のようにします。

cat yourfile | awk -F ';' '{printf("%s", $2? "foo\n" : "")}' | wc -l

その後、次の条件で使用できます。

[ $(cat yourfile | awk -F ';' '{printf("%s", $2? "foo\n" : "")}' | wc -l) -gt 2 ] \
&& echo "at least 2 matches" \
|| echo "less than 2 matches"

ifまたはステートメントを好む場合:

if [ $(cat yourfile | awk -F ';' '{printf("%s", $2? "foo\n" : "")}' | wc -l) -gt 2 ];
then
    echo "at least 2 matches"
else
    echo "less than 2 matches";
fi

おすすめ記事