Rimuovi gli spazi bianchi prima di un campo usando AWK
-
03-07-2019 - |
Domanda
( Duplicazione quasi esatta di Mantenimento del POST del formato originale passando per AWK inviato dalla stessa persona. )
Ho una semplice domanda relativa a g awk, illustrata di seguito:
1 int blah (void)
2 {
3 if (foo) {
4 printf ("blah\n");
5 }
6 return 0;
7 }
Usando il seguente codice gawk - usando gensub () per mantenere la formattazione originale:
gawk '{ print gensub($1, "\t", 1) }' ./sample_code.out
int blah (void)
{
if (foo) {
printf ("blah\n");
}
return 0;
}
Come posso usare g awk o awk (forse con espressioni regolari) per rimuovere spazi bianchi precedenti prima del campo $ 1 (^)
Illustrato di seguito:
int blah (void)
{
if (foo) {
printf ("blah\n");
}
return 0;
}
Cordiali saluti in anticipo
Soluzione
Funziona, ma nella consapevolezza che vorrai sempre spogliare 3 spazi.
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; }
Altri suggerimenti
awk '{sub(/^[ \t]+/, ""); print}'
Questo è dal famoso elenco di fodere awk 1, disponibile qui: http: //student.northpark.edu/pemente/awk/awk1line.txt
Questo mi sembra un caso di "strumento sbagliato per il lavoro". Userei sed`:
sed 's/^[ <tab>]*//' sample.out
Ora, se il problema riguarda i dettagli più interni di awk
, questo potrebbe non essere d'aiuto; se il problema è rimuovere gli spazi, è più veloce e (almeno discutibilmente) più semplice.