2017-04-11 116 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