如何使用awk命令验证文件的内容?

时间:2018-10-02 20:46:57

标签: linux bash shell unix sh

我有一个文件abc.txt,内容为:

8503 C
8501 C
8500 C

我想通过以下方式验证文件内容:

对于8503-值必须为“ C”
如果是,那么成功
否则失败

应该对文件中的所有内容重复

即。假设文件是​​否包含:

8503 E
8501 C
8500 C

现在8503的值为“ E”,那么它是失败的。 8501的值为“ C”表示成功

我该如何使用shell脚本?


我尝试了以下命令:

awk -F ' ' '$2 != "C" { echo "Value is not C for happy path" }' < /tmp/abc.data

但是它给了我空白输出而没有显示回声。

我想查看文件的第二列是否具有除“ C”之外的任何值,那么它是失败的。

感谢任何输入。

谢谢

2 个答案:

答案 0 :(得分:2)

如果您想查看第2列中是否有任何不是“ C”的值,这会导致“失败”,那么:

 awk '$2!="C"{e=1;exit}END{print e?"fail":"success"}'

答案 1 :(得分:0)

只是为您的awk脚本提供帮助:您的错误是使用echo,这不是有效的awk命令。请改用print

awk '$2 != "C" { print "Value is not C for happy path" }' < /tmp/abc.data

(我删除了不必要的-F选项:用空格分隔的字段是默认选项)

但是,正如Walter在评论中所述,在您的情况下,仅使用grep命令就足够了(使用GNU sed在此处添加标题行):

grep E$ /tmp/abc.data | sed '1i Error lines:'