2009-01-03 81 views
3

傳遞我有一個問題,使用AWK簡單地從一個流中除去的字段,如下所示:保持原始格式POST通過AWK

1 int blah (void) 
    2 { 
    3   if (foo) { 
    4     printf ("blah\n"); 
    5   }  
    6   return 0; 
    7 } 

我使用以下代碼來移除第一字段:

$ awk'{$ 1 =「」; print}'example.out

int blah (void) 
{ 
if (foo) { 
printf ("blah\n"); 
} 
return 0; 
} 

爲什麼會出現這種情況?這是因爲AWK刪除了所有的空格 - 這可以防止嗎?提前

回答

2

http://awk.freeshell.org/RangeOfFields

親切的問候包含描述如何做到這一點。它還鏈接到http://student.northpark.edu/pemente/awk/awktail.txt其中包含3個解決方案的問題。據我所知,如果你分配給一個字段,那麼輸出字段分隔符用於連接所有字段。所以" "+ suddendly被摺疊到一個空間。儘管如此,我不是awk的專家。例如,嘗試分配:給變量OFS和冒號代替空格會導致在輸出字段之間:

echo a b c | awk 'BEGIN{ OFS = ":" } { $1=""; print }' 
$ :b:c 

如果使用 AWK,那麼你可以使用它的gensub擴展,我覺得非常直接使用:

print gensub($1 "[\t ]*(.*)", "\\1", 1); 
+0

感謝您的協助Litb;)非常感謝... – Aaron 2009-01-03 03:03:55