linux 使用AWK删除字段前的空格

b1payxdu  于 2022-12-18  发布在  Linux
关注(0)|答案(3)|浏览(208)

(* 与同一人提交的Keeping original format POST passing through AWK几乎完全相同。*)
我有一个关于gawk的简单问题,如下所示:
使用以下gawk代码-使用gensub()保持原始格式:

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

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

如何使用gawk或awk(可能使用正则表达式)删除字段$1**(^)**之前的空格
图示如下:

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

nzk0hqpo1#

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

这是从著名的awk 1 liners列表,可以在这里找到:http://student.northpark.edu/pemente/awk/awk1line.txt

of1yzvn4

of1yzvn42#

我觉得这是一个“错误的工具”的例子。我会使用sed ':

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

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

h9vpoimq

h9vpoimq3#

这是可行的,但在知识,你总是想剥夺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;
}

相关问题