
Ich analysiere eine Datei und verwende awk, um das erste und dritte Feld zu erhalten.
Das ist alles gut, aber im ersten Feld möchte ich die letzten 4 Zeichen aus dieser Zeichenfolge entfernen. Bisher habe ich keine Möglichkeit gefunden, dies in awk zu tun, und die einzige Möglichkeit besteht darin, mehrere Aufrufe zu tätigen, sodass ich die awk-Ausgabe in 2 Variablen speichere und dann die erste Zeichenfolge schneide.
Gibt es eine effizientere Möglichkeit, dies zu tun? So sieht die Datei aus
abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod
Das ist, was ich in der Schleife ausführe
echo $output | awk -F, "{print $1, $3}"
Dadurch wird die Zeile korrekt gedruckt, aber dann möchte ich $1 kürzen und die letzten 4 Zeichen entfernen
Antwort1
Eine Möglichkeit besteht darin, die Funktion von awk zu verwenden substr
. Beginnen wir beispielsweise mit dieser Eingabe:
$ cat input
abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod
Wir können die Spalten eins und drei drucken und dabei die letzten vier Zeichen der Spalte eins weglassen:
$ awk -F, '{print substr($1, 1, length($1)-4), $3}' input
abcdefghi xyz
riosadsef eis
baifafsag eod