Frage zur Datenbereinigung - regulärer Ausdruck zum Entfernen von Kombinationen aus nachstehenden Leerzeichen und Kommas

Frage zur Datenbereinigung - regulärer Ausdruck zum Entfernen von Kombinationen aus nachstehenden Leerzeichen und Kommas

Ich habe Adresszeichenfolgen, die (aufgrund schlechter anfänglicher Programmierung) viel zu viel Freitexteingabe erlaubten. Beim Aufräumen dieses geerbten Durcheinanders ist mir aufgefallen, dass am Ende der Adressfelder häufig (und häufig auch nicht) Kommas stehen, die ich loswerden möchte.

Das Problem besteht (wiederum häufig!) darin, dass diejenigen, die die Daten eingeben (und pro Zeile bezahlt werden...), Zeichenfolgen wie die folgenden eingeben:

`address_1_string  ,  `

Das ist address_1_string, gefolgt von zwei Leerzeichen, gefolgt von dem Komma, das ich löschen möchte, gefolgt von zwei weiteren Leerzeichen. Die Anzahl der Leerzeichen (entweder vor oder nach dem Komma) ist beliebig und liegt normalerweise zwischen 0 und 5. Das Problem wird noch dadurch verschärft, dass address_string_1es selbst interne (gültige) Kommas enthalten kann.

Ich suche also nach einem regulären Ausdruck, der bis zum Zeilenende geht, alle nachstehenden Leerzeichen, das erste Komma und dann alle weiteren Leerzeichen löscht, bis ein gültiges Zeichen [a-zA-Z0-9] ([:alphanum:]?) gefunden wird.

Ich habe Ahnung von regulären Ausdrücken, aber das geht über meine Gehaltsstufe hinaus. Dies ist mein erster Beitrag auf Stackexchange. Wenn ich also am falschen Ort bin, leiten Sie mich bitte weiter. Danke.

Antwort1

< input sed 's/[[:space:],]*$//' > output

Würde alle Leerzeichen und Kommazeichen am Ende der Zeile löschen.

Um die Datei direkt zu bearbeiten, sedverfügen einige Implementierungen über eine -iOption, die von perlder -iOption inspiriert ist:

sed -i 's/[[:space:],]*$//' input-and-output    # GNU, busybox, NetBSD, OpenBSD
sed -i '' 's/[[:space:],]*$//' input-and-output # FreeBSD, macOS

verwandte Informationen