特定のファイルにテキストが見つからない場合は、ゼロを印刷します。

特定のファイルにテキストが見つからない場合は、ゼロを印刷します。

grep特定のファイルに見つからない場合は、0を印刷したいと思います。

grep -A4 " Apple " a.txt | tail -1 | awk '{printf("%f", $4)}' >> out

私もif else条件を使ってみました。

if grep -A4 " Apple " a.txt | tail -1 ;
then 
    awk '{printf("%f", $4)}' >> out
else 
    echo 0 >> out
fi

たとえば、次のファイルが提供されます。

Apple
is 
xyz 
abc def cost 352.271

私のコマンドはapple352.271をgrepして印刷します。しかし、一致するものがない場合は印刷したいと思います0

ベストアンサー1

あなたがやろうとしていることは次のとおりです。

if result=$(grep -A4 " Apple " a.txt); 
then 
    echo "$result"|tail -1|awk '{printf("%f",$4)}' >>out
else 
    echo 0 >>out
fi  

コードの主な問題は、パイプを使用するときに終了コードが常にケースの最後のコマンドから出てくるので、tail -1if0条件が常にtrueであることです。

コードの他の問題は、awk '{printf("%f", $4)}' >> outこれが入力をどこで取得するかということですawk

おすすめ記事