这个问题可能没有直接的答案......如果是这样,请不要担心。我有一个类似于
的XML文件<a>0.00</a>
<b>0.00</b>
<c>0.00</c>
<d>0.00</d>
这是我正在使用的一个愚蠢的版本。我的目标是删除任何数据点为零的行,当且仅当所有数据点都为零时(如上面给出的示例)。即使文件中的一行包含非零条目,我也无法删除它们中的任何一行。例如,如果上面是
<a>0.00</a>
<b>0.00</b>
<c>1.00</c>
<d>0.00</d>
然后该文件应保持不变。最终,我只想删除所有行,如果它们在每个标记中都为零,则保留文件,否则。我知道如果所有行都有零数据输入,则以下内容将起作用。
sed --in-place '\|>0.00</|d' $FILENAME
但是,如果我有下面的第二个例子,这将留给我
<c>1.00</c>
这不是我正在寻找的东西。我知道我可能需要一个if语句,比如
if (all lines contain the string '>0.00</') then
sed --in-place '\|>0.00</|d' $FILENAME
fi
我认为if语句中的条件我不确定。如果所有行包含上面提到的字符串&#34;我将如何说明&#34;?我不一定要使用sed,我过去曾使用过awk,但我最熟悉的是sed ....任何输入或指向正确方向的人都会非常感激。感谢
答案 0 :(得分:2)
grep -vq ">0.00<" $FILENAME || sed -i '\|>0.00<|d' $FILENAME
执行第二个命令时,只有文件在所有行中都包含0.00。