Eliminar espacios en blanco antes de un campo usando AWK
-
03-07-2019 - |
Pregunta
( duplicado casi exacto de Mantener el formato original POST pasando a través de AWK enviado por la misma persona. )
Tengo una pregunta simple relacionada con g awk, que se ilustra a continuación:
1 int blah (void)
2 {
3 if (foo) {
4 printf ("blah\n");
5 }
6 return 0;
7 }
Utilizando el siguiente código gawk: utilizando gensub () para mantener el formato original:
gawk '{ print gensub($1, "\t", 1) }' ./sample_code.out
int blah (void)
{
if (foo) {
printf ("blah\n");
}
return 0;
}
¿Cómo puedo usar g awk o awk (quizás con expresiones regulares) para eliminar los espacios en blanco anteriores antes del campo $ 1 (^)
ilustrado abajo:
int blah (void)
{
if (foo) {
printf ("blah\n");
}
return 0;
}
Saludos cordiales por adelantado
Solución
Esto funciona, pero sabiendo que siempre querrá quitar 3 espacios.
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; }
Otros consejos
awk '{sub(/^[ \t]+/, ""); print}'
Esto es de la famosa lista de liners de awk 1, se puede encontrar aquí: http: //student.northpark.edu/pemente/awk/awk1line.txt
Esto me parece un caso de 'herramienta incorrecta para el trabajo'. Yo uso sed`:
sed 's/^[ <tab>]*//' sample.out
Ahora, si el problema tiene que ver con los detalles más internos de awk
, esto puede no ser de ayuda; Si el problema es eliminar los espacios, es más rápido y (al menos posiblemente) más simple.