2016-12-27 109 views
0

這裏是我的代碼:簡單awk中bash腳本與UDVs

!/bin/bash 

#Basic Syntax - pfc.sh [filename] [keyword] [delimiter] 

cat $1 |awk -F $2 '{print $2}' |awk -F $3 '{print$1}' 

這個工作過程,然而在第二和第三個變量,需要由單一蜱包圍工作,我不喜歡這是必要。提前致謝。

+1

那麼問題是什麼?這段代碼是你所擁有的一個完全複製品嗎? – sjsam

+0

你的意思是''{print $ 2}''部分?這需要單引號,以避免將$ 1和$ 2擴展爲相應的位置參數。單引號字符串按字面處理,而雙引號字符串可以有變量和參數擴展。 – dramzy

+0

沒有打印部件是好的,我的問題是當您使用awk -F時,您需要圍繞您的輸入的單個打勾,我不希望我的用戶必須輸入。 – Nua

回答

1

如何將單個滴答滴加到我的變量中,這樣我的團隊就不必這樣做。

它目前是如何工作的例子:

sh pfc.sh variable1 'variable2' 'variable3' 

對不起,沒有變通了點。單引號(不勾號)告訴shell以字面解釋模式。例如,考慮你有'my argument',而不用在單引號內包含參數,shell將其解釋爲兩個參數 - myargument

出於同樣的原因,你的腳本也是有缺陷的。它應該是

cat "$1" |awk -F "$2" '{print $2}' |awk -F "$3" '{print $1}' 
# mind the double quotes which prevents word splitting 
# And you can't replace double quotes with single quotes as 
# variable expansion will not happen inside single quotes. 
+0

,當然,「$ 1」可以作爲第一個'awk'的輸入,即'awk'{stuff }'「$ 1」| awk ..''而不是使用'cat'$ 1「|'。祝你們好運。 – shellter