(同一人提交的Keeping original format POST passing through 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;
}
提前亲切的问候
答案 0 :(得分:4)
awk '{sub(/^[ \t]+/, ""); print}'
这是来自着名的awk 1衬里列表,可以在这里找到:http://student.northpark.edu/pemente/awk/awk1line.txt
答案 1 :(得分:2)
这让我觉得是“错误的工作工具”。我用sed`:
sed 's/^[ <tab>]*//' sample.out
现在,如果问题完全在于awk
的最内层细节,那么这可能没有用;如果问题是要删除空格,它会更快,并且(至少可以说是)更简单。
答案 2 :(得分:1)
这样可行,但据您所知,您总是想要删除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; }