我试图找到一种方法,仅当 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