CSVファイルの列値が1より大きい場合にのみ、Linuxコマンドを実行します。

CSVファイルの列値が1より大きい場合にのみ、Linuxコマンドを実行します。

CSVファイルの特定の列の値が1より大きい場合にのみ、Linuxコマンドを実行する方法を見つけようとします。

サンプルCSVファイル:

Item,Quantity  
Pen,1  
Pencil,1  
Stapler,3  

上記の例を使用して、スクリプトがCSVの列2を確認し、値が1より大きい場合(この場合は3であるため)、コマンドを実行して列2のすべての値が1に等しくなるようにします。 、それでは何もできません。

これを助ける人がいますか?

答え1

awk -F, 'NR>1 && $2 > 1 {found=1 ; exit} ; END {exit !found}' file.csv && mycommand

0フィールド2> 1の場合(true)で終了します。それ以外の場合は1(false)で終了します。mycommandtrueの場合は実行します。

NR>1ヘッダーをスキップしますItem,Quantity(文字列「数量」は> 1と評価されます)。

答え2

列を確認しawkて基準を満たすと、特定の番号で終了します。次に、コマンドを使用して終了コードをテストし、$?コマンドを実行します。

awk -F ',' '$2>1{exit 42}' file
[[ "$?" -eq 42 ]] && echo yes || echo no

答え3

これにより、トリックを実行できます。

if grep -qE ',([2-9]|[1-9][0-9])' file
then
    echo execute your command
fi

答え4

#!/bin/bash

if [[ $(cut -d, -f2 file.txt | grep '[0-9]' | sort -nr | head -1) -gt 1 ]]; then
  echo 'a number in the 2nd column is greater than 1.'
else
  echo 'i am doing nothing.'
fi

関連情報