Ich habe eine Textdatei wie folgt aus:Wie kann ich ein bestimmtes Feld einer Datei mit awk in Großbuchstaben ändern?
1 http http 3 4 5
2 dns dns 4
3 ftp ftp 4 5 6 8
Ich möchte die Ausgabe wie folgt sein:
1 HTTP http 3 4 5
2 DNS dns 4
3 FTP ftp 4 5 6 8
Ich möchte aus Kleinbuchstaben in Großbuchstaben das zweite Feld ändern und nur das zweite Feld.
Beachten Sie, dass die Anzahl der Felder in einer bestimmten Zeile nicht festgelegt ist.
Kann ich dieses Ziel mit awk
erreichen?
Vorsicht: Dies wird Zeilen löschen mit nur einem Feld. Vielleicht 'awk' ($ 2 = toupper ($ 2)) || 1 'file' –
Dies bricht auf einer Zeile, die weniger als 2 Felder hat. In diesem Fall wird die Zeile nicht gedruckt, da '$ 2' für die leere Zeichenfolge ausgewertet wird. Ich würde vorsichtig sein mit einer Zuweisung, wo awk einen Test erwartet. Es bricht auch, wenn Sie "awk -F" [] "$ 2 = toupper ($ 2)" <<< "a b c" tun, wobei das 2. Feld der leere Stich ist. Es kann leicht mit 'awk' korrigiert werden NF> 1 {$ 2 = toupper ($ 2)} 1 'Datei'. – jfg956
@WilliamPursell: Ihre Lösung fügt einen Endplatz in Zeilen mit einem einzelnen Feld hinzu. – jfg956