shell 从文件中查找零值

8yoxcaq7  于 2023-08-07  发布在  Shell
关注(0)|答案(4)|浏览(116)

我需要找出文件中是否有任何一行在第五列中的值为0。此列中的值均为数字:

cat /home/vsrchops/Usrlogin_1.csv | awk '{print $5}'
8
8
1
4
2
8
23
61
473
1465
1771
2200

字符串
我尝试了这个命令:

cat /home/vsrchops/Usrlogin_1.csv | awk '{print $5}' | grep 0


但是它匹配所有包含 * 0的行,而不是那些 * 恰好 * 0的行:

2200


如何找到恰好为零的值?

eeq64g8w

eeq64g8w1#

首先,cat命令是不必要的,因为我们可以使用<来重定向AWK的输入以从文件中读取。
我们可以修改grep命令来匹配行的开始和结束,如下所示:

awk '{print $5}' </home/vsrchops/Usrlogin_1.csv | grep '^0$'

字符串
这里,^匹配行的开始,$匹配行的结束。
或者我们可以使用grep选项来匹配整行:

awk '{print $5}' </home/vsrchops/Usrlogin_1.csv | grep -Fx 0


这两个选项中的任何一个都只匹配那些正好为0的行。
或者,我们可以避免创建grep进程,而完全在AWK中进行匹配:

awk '$5 ~ /^0$/ {print $5}' </home/vsrchops/Usrlogin_1.csv


这可能是最简单和最有效的解决方案。

ltqd579y

ltqd579y2#

jot -w 'f1 f2 f3 f4 %d f6' 7 -10 - 5 | gtee >( gcat -b >&2) |

个字符
_!!_实际上是空字符串_与数字零(!!_)的字符串连接,以形成字符串零("0"
这种方法不适用于$5 == "00"$5 == "+0"这样的场景

e5nszbig

e5nszbig3#

短一点:

awk '$5==0{print $5}' /home/vsrchops/Usrlogin_1.csv

字符串
(匹配0,e。例如000

yftpprvb

yftpprvb4#

在AWK中使用if语句怎么样?

echo "1;2;\n2;0;\n5;00;" | awk -F\; '{ if ( $2 == "0" ) {print $2} }'

字符串

相关问题