Ich habe eine Datei im folgenden Format:
%Vor%Ich möchte col3 (mit dem Delimiter "|") aus dem Header und den Daten löschen. Kann dies mit awk / sed gemacht werden?
Bitte beachten Sie, dass die Daten in Spalte 3 möglicherweise leer sind (Zeile 2).
Die Ausgabe sollte lauten:
%Vor%Hier ist eine mögliche Sed-Lösung:
%Vor%Dies wird gut für Ihr Beispiel funktionieren und könnte für andere Beispiele angepasst werden, ist aber nicht wirklich eine allgemeine Lösung.
Erläuterung:
-i.bak
Bearbeiten Sie die Datei an Ort und Stelle, zuerst eine Sicherung namens filename.bak
.
\(^.*|.*|\)
Passen Sie vom Anfang der Zeile bis einschließlich des zweiten Trennzeichens alles an. Die Klammern gruppieren diese Übereinstimmung (Gruppe 1).
.*|
Alles bis einschließlich des letzten Trennzeichens abgleichen.
\(.*\)
Finde den Rest und gruppiere (Gruppe 2).
Ersetzen Sie alle vorherigen Übereinstimmungen durch den Text aus Gruppe 1 und Gruppe 2.
Die Verwendung von cut
ist die richtige Antwort, aber wenn Sie awk
wirklich verwenden möchten, ist es einfacher als Kent zeigt:
Mischen Sie einfach die Felder nach down, und ändern Sie dann den Wert von
NF
, um die Anzahl der Felder zu ändern.
Eine weitere awk
Lösung könnte nützlich sein, wenn Sie viele Spalten haben