Keeping Originalformat POST durch AWK vorbei
-
03-07-2019 - |
Frage
Ich habe ein Problem mit AWK Verwendung von einem Strom ein Feld einfach zu entfernen, unten dargestellt:
1 int blah (void)
2 {
3 if (foo) {
4 printf ("blah\n");
5 }
6 return 0;
7 }
Ich verwende den folgenden Code, um das erste Feld zu entfernen:
$ awk ‚{1 $ = ""; print}‘example.out
int blah (void)
{
if (foo) {
printf ("blah\n");
}
return 0;
}
Warum ist dies der Fall? Ist dies, weil AWK alle Leerzeichen entfernt - kann dies verhindert werden
Mit freundlichen Grüßen im Voraus
Lösung
http://awk.freeshell.org/RangeOfFields
Enthält eine Beschreibung, wie es geht. Es verbindet auch http://student.northpark.edu/pemente/awk/awktail. txt die 3 Lösungen des Problems enthält. Soweit ich weiß, wenn Sie auf ein Feld zuweisen, dann wird das Ausgabefeld Trennzeichen zusammen alle Felder verketten. So " "+
suddendly ist mit einem Raum zusammenbrach. Nehmen Sie es mit einem Körnchen Salz obwohl, ich bin kein Experte awk. Zum Beispiel versuchen :
auf die Variable OFS
Zuordnung und Doppelpunkte statt Leerzeichen werden zwischen den Feldern in der Ausgabe führen:
echo a b c | awk 'BEGIN{ OFS = ":" } { $1=""; print }'
$ :b:c
Wenn Sie g awk, dann können Sie seine gensub
Erweiterung verwenden, die ich ziemlich geradlinig finden zu verwenden:
print gensub($1 "[\t ]*(.*)", "\\1", 1);