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)で終了します。mycommand
trueの場合は実行します。
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