2013-11-28 88 views
0

我有一個shell腳本,我想將其導出的'data'變量沒有任何空格。我試過gsub(),但我似乎無法得到它的工作。使用gsub刪除空白的awk shell腳本

export data="`grep -e 'P/N :' "$xfile" | awk '{print substr($3,3)}' `" 
if [ "$data" = "" ] && [ "$skipdata" = "0" ] 
then 
    export data="`grep -e 'P/N:' "$xfile" | awk '{print substr($2,3)}' | 
    awk '{ if (index($1,"-D") != 0) 
      $1 = (substr($1, 1, (index($1,"-D") -1))) "-DIE" } 
      { print $1 }' `" 

    if [ "$data" = "" ] 
    then 
    export data="`grep -e 'CUST PART NO:' "$xfile" | awk '{print substr($4,3)}' | 
    awk '{ if (index($1,"-D") != 0) 
      $1 = (substr($1, 1, (index($1,"-D") -1))) "-DIE" } 
      { print $1 }' `" 
    fi 
fi 

最終我希望$ data是空白的。我可以這樣做:

export data="awk '{gsub($data," ","");print}" 
+1

當我不確定函數調用語法,參數等時,我會執行'man(g)awk'並搜索該函數。你嘗試過嗎?你會在那裏找到答案。 – Kent

+3

你的腳本有足夠的問題,它不值得使用它作爲一個起點,並試圖糾正它。只需發佈一些示例輸入和預期輸出,以便我們可以向您展示如何從頭開始編寫它。 –

回答

3

它看起來像你的腳本應該寫成剛是這樣的:

data=$(awk -F':' ' 
$1 ~ /^(P\/N[[:space:]]*|CUST PART NO)$/ { 
    sub(/-D.*/,"-DIE",$2) 
    gsub(/[[:space:]]+/,"",$2) 
    print $2 
} 
' "$xfile") 

我們可以使用作爲一個起點,如果它沒有完全按照你想要的那樣做,那麼更新你的問題來包含來自$ xfile的一些示例行和你想要的輸出。

0

我認爲正確的語法是

gsub(/[[:blank:]]+/,"") 

那麼你很可能

data=$(awk '{gsub(/[[:blank:]]+/,""); print}' <<< "$data")