Remover espaços em branco antes de um campo usando AWK
-
03-07-2019 - |
Pergunta
( Quase duplicata exata de Manter POST formato original passando por AWK apresentado pela mesma pessoa. )
I têm uma simples questão pertencente a g awk, ilustrado abaixo:
1 int blah (void)
2 {
3 if (foo) {
4 printf ("blah\n");
5 }
6 return 0;
7 }
Usando o seguinte código gawk - usando gensub () para manter a formatação original:
gawk '{ print gensub($1, "\t", 1) }' ./sample_code.out
int blah (void)
{
if (foo) {
printf ("blah\n");
}
return 0;
}
Como posso usar g awk ou awk (talvez com expressões regulares) para remover espaço em branco anterior antes de campo $ 1 (^)
ilustrado abaixo:
int blah (void)
{
if (foo) {
printf ("blah\n");
}
return 0;
}
Atenciosamente de antecedência
Solução
Isso funciona, mas no conhecimento que você sempre vai querer tirar 3 espaços.
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; }
Outras dicas
awk '{sub(/^[ \t]+/, ""); print}'
Esta é da famosa lista de forros awk 1, pode ser encontrada aqui: http: //student.northpark.edu/pemente/awk/awk1line.txt
Esta me parece ser um caso de 'ferramenta errada para o trabalho'. Eu usaria sed`:
sed 's/^[ <tab>]*//' sample.out
Agora, se o problema é tudo sobre os mais internos detalhes de awk
, este pode ser nenhuma ajuda; se o problema é fazer com que os espaços removido, ele é mais rápido e (pelo menos discutivelmente) mais simples.