我的文件内容如下:
label1 name
1
label2 id
2
label3 id
0
我正在使用grep扫描线条,如果线条与图案不匹配,则导致失败"标签"值大于0
if (grep -v -l "label" fileA) > 0
then
echo -e "failure"
else
echo -e "success"
fi
我还想打印那些与失败的值相对应的行(即> 0)
label1 name
label2 id
我在下面尝试过,但没有结果。我不确定,我在哪里做错了
ps -ef | grep -v -l "label" fileA > 0
我是Unix的新手,并试图弄清楚如何打印故障线。
请帮忙
答案 0 :(得分:0)
试试这个 -
public class COnsumersReport
{
public int ID { get; set; }
public string name { get; set; }
public string sirname { get; set; }
public double Borc { get; set; }
}
您可以根据需要过滤价值,如下所示 -
$ cat f
label1 name
1
label2 id
2
label3 id
0
$ awk '/label/ {k=$0;getline tmp;print k,tmp}' f
label1 name 1
label2 id 2
label3 id 0
编辑1:如果你的文件有一些没有价值的标签 -
$ awk '/label/ {k=$0;getline tmp;if(tmp > 0) {print k,tmp}}' f
label1 name 1
label2 id 2
答案 1 :(得分:0)
通常情况下,如果找到选定的行,grep
的退出状态为0,否则为1。我认为你很期待grep -c
:
$ grep -c "label" f
3
$ echo $?
0
所以你可以做点什么
if [ $(grep -c "label" f) -gt 0 ]; then
echo match found
fi
或
grep -c "label" f
if [ $? -eq 0 ]; then
echo match found
fi
您还想要打印找到的行。您可以将它们存储在变量中。
foundlabels=$(grep "label" f)
echo "You can test on \$? here, but now you have another way."
if [ -n "${foundlabels}" ]; then
echo "failure"
echo "${foundlabels}"
else
echo "success"
fi