我想grep for“String =”并且当没有提到任何内容时...当它为空时...用if then else语句回显:
我尝试过类似的东西:
if grep "String" input.txt | sed -e 's/ String = //g' | egrep -q "^$"
then
<command> > output.txt
else
echo "--" > output.txt
fi
当我使用sed命令时,该行为空。
提前谢谢!更新 这些是input.txt中的一些可能的行
String = TextA
String =
String = TextB
答案 0 :(得分:1)
您可以使用此grep
检查输入文件中的String =
:
if grep -Eq 'String *= *$' input.txt; then
<command> > output.txt
else
echo "--" > output.txt
fi
答案 1 :(得分:0)
您可以考虑使用awk:
CMD=$(awk '$1=="String" {print $3}' input.txt)
if [ -n "$CMD" ]
then
CMD="--"
fi
echo "$CMD" > output.txt
一些解释:
=
符号之前和之后有空格;这是第二列)if [ -n "$CMD" ]
只测试变量CMD
是否为空答案 2 :(得分:0)
根据您的问题,我假设您在查找文件中的指定行时遇到问题。以下grep命令将找到这些行:
egrep 'String[[:space:]]*=[[:space:]]*' input.txt
使它适应你的if / else语句,它应该工作。
或者,如果您想在&#34; =&#34;之前指定一个空格,请执行:
egrep 'String[[:space:]]{1}=[[:space:]]*;