2015-11-19 355 views
1

是否可以在同一內聯的另一個AWK塊中傳遞AWK變量?將下面的代碼在哪裏工作$ 8由值週一11月16日16:00:00 2015年將AWK變量值傳遞給嵌套的AWK

|awk -F"[][]" '{print $2, $6, ${echo $8|awk '{d=$0;cmd="date -d\""d"\" +\"%a %b %d %r %Y\"" ;cmd|getline $0;close(cmd)}7'}}' 
+0

您是路要走。 awk不是shell。獲取Arnold Robbins編寫的「有效的Awk編程」第4版,並在閱讀前幾章後再試一次。 –

+0

是的,我明白,我一定會檢查。但是,因爲我需要緊急基礎上的這種解決方案,無論如何,嵌套AWK都可以實現,或者根本無法實現? –

+1

如果你給出一個你有的輸入樣本和你試圖從中得到的輸出,你可能會有更好的運氣讓別人爲你解開這個問題。 – jas

回答

1

基於你今天問了兩個問題,這個問題其實問到兩個答案結合在一個聲明。
這可以通過修改埃德莫頓回答Date manipulation in awk variable : Non Military Format並將其嵌入到你的awk腳本來實現更簡單(即無需外部調用):

awk -F"[][]" '{ split($8,a,/[: ]/) 
    p = "AM" 
    if(a[4]a[5]a[6] > 120000) { 
     p = "PM" 
     a[4] = a[4] > 12 ? a[4] - 12 : a[4] 
    } else if(a[4] < 1) { 
     a[4] = 12 
    } 
    datetime=sprintf("%02d:%02d:%02d %s",a[4],a[5],a[6],p) 
    print $2, $6, a[1]" "a[2]" "a[3]" "datetime" "a[7]}'