2014-02-28 65 views
-2

我無法在Fiexd搜索awk命令中使用unix $變量。

請看下面我的命令。

a="NEW_TABLES NEW_INSERT" 
b="NEW" 
echo $a | awk -v myvar=$b -F'$0~myvar' '{print $2}' 

沒有返回任何輸出

但如果手動輸入$ B值出現,其工作如下

echo $a | awk -v -F'NEW' '{print $2}' 

    outputs: 
TABLES NEW_INSERT 
+0

@downvoter:說明理由 – logan

+1

我沒有downvote ...此外,這將有利於給一個什麼樣的在'$了'樣本變量。 – fedorqui

+0

@fedorqui:它包含NEW_TABLES NEW_INSERT – logan

回答

2

這應該使它:

$ a="NEW_TABLES NEW_INSERT" 

$ echo $a | awk -F"NEW_" '{print $2}' 
TABLES 

$ b="NEW_" 
$ echo $a | awk -F"$b" '{print $2}' 
TABLES 
+0

如果我使用分號';'在awk中拋出錯誤。 'awk -F'\;' '{print $ 1}''輸出: 'awk:warning:escape sequence \;'視爲普通;'' – logan

+1

不需要逃避';'。直接使用'awk -F';'' – fedorqui

1

你報價都搞砸了,你可以使用你的變量來拆分使用分割函數的行:

a="NEW_TABLES NEW_INSERT" 
b="NEW" 
echo $a | awk -v myvar="$b" '{split($0,ary,myvar);print ary[2]}' 

輸出:

_TABLES