2009-01-03 84 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