2017-04-11 64 views
0

我有一个配置(conf.file)与从shell脚本生成的变量和值列表等号后的所有变量的Null值猛砸查找文件

cat conf.file 
export ORA_HOME=/u01/app/12.1.0 
export ORA_SID=test1 
export ORA_LOC= 
export TW_WALL= 
export TE_STAT=YES 

我想找到任何变量等号(=)符号后空值,如果是这样,然后报告消息作为配置文件有以下空变量

的列表

回答

0

您可以用awk此:

awk -F"[= ]" '$3=="" && NF==3 {print $2}' conf.file 

这将分裂每个记录由空格或等号表示,然后测试每行中的第三个字段。如果它是空的,它将打印第二个字段(变量)。

更新:在字段数(NF)等于3的测试中添加以避免空行。

+0

谢谢,但这个返回null行以及 'AWK -F “[=]” '$ 3 == “”{打印$ 2}' conf.file ORA_LOC TW_WALL AN_STAT onenode11/acvociordbu006a-> awk -F“[=]”'$ 3 ==“”{print $ 2}'conf.file | wc -l ' – CoolChap007

+0

啊!没有空行。我将更新 – JNevill

+0

Bingo..Thnx JNevill – CoolChap007

0

尝试:

awk -F"=" '$2' Input_file 

正如你=之后需要一个领域不应该是空的,所以使得=为字段分隔和检查,如果第二个字段不为空,然后在我的代码默认打印定义无动作任何满足此条件的线路都会发生行动。让我知道这是否有帮助。

编辑:以上只会给出= =后的值为NULL的值,这要感谢JNevill让我知道需求完全相反,现在可能会有相同的帮助。

awk -F"=" '!$2{gsub(/.* |=/,"",$1);print $1}' Input_file 
+0

这将返回所有带有值的变量。但是我的要求是只返回空变量没有空行 – CoolChap007

+0

不,这不是这种情况。我只得到那些在值存在后具有2nd字段的值。 – RavinderSingh13

+1

@ RavinderSingh13需求是返回没有值的变量名。这将返回设置的变量的值。这是非常优雅的,但这与OP想要的完全相反。此外,从OP的示例输入文件中,未设置变量显然存在相同的符号,所以即使符合要求,这也不起作用。 – JNevill