几乎完全重复的保持原始格式POST通过AWK 由同一人提交。

我有一个关于 g awk的简单问题,如下所示:

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

使用以下gawk代码 - 使用gensub()来维护原始格式:

 gawk '{ print gensub($1, "\t", 1) }' ./sample_code.out

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

如何在字段$ 1 (^)

之前使用 g awk或awk(可能使用正则表达式)删除前一个空格

如下图所示:

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

提前亲切的问候

有帮助吗?

解决方案

这样可行,但据您所知,您总是想要删除3个空格。

vinko@parrot:~$ cat foo.c
  1 int blah (void)
  2 {
  3         if (foo) {
  4                 printf ("blah\n");
  5         }
  6         return 0;
  7 }

vinko@parrot:~$ gawk '{ print gensub(/^   /,"",1,gensub($1, "", 1)) }' foo.c    
int blah (void)
{
        if (foo) {
                printf ("blah\n");
        }
        return 0;
}

其他提示

awk '{sub(/^[ \t]+/, ""); print}'

这是来自着名的awk 1衬里列表,可以在这里找到: http: //student.northpark.edu/pemente/awk/awk1line.txt

这让我觉得是“错误的工作工具”。我用sed`:

sed 's/^[ <tab>]*//' sample.out

现在,如果问题是关于 awk 的最内层细节,那么这可能没有用;如果问题是要删除空格,它会更快,并且(至少可以说是)更简单。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top