仅当 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) 退出。mycommand如果 true 则运行。

跳过NR>1标题Item,Quantity(字符串“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

相关内容