GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Sed Alles bis einschließlich des ersten Punkts entfernen, wenn es mehr als einen Punkt in dieser Zeile gibt, und dies für die gesamte Datei tun?

sed Entfernen Sie alles bis einschließlich des ersten Punkts, wenn es mehr als einen Punkt in dieser Zeile gibt, und tun Sie dies für die gesamte Datei.

Vor sed:

akamai.com
cdnjs.cloudflare.com
com.cdn.cloudflare.net

Nach sed:

akamai.com
cloudflare.com
cdn.cloudflare.net

Akzeptierte Antwort:

$ sed '/\..*\./s/^[^.]*\.//' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Der sed Das Skript vergleicht zunächst Zeilen, die mindestens zwei Punkte enthalten, mit dem regulären Ausdruck \..*\. (hätte auch [.].*[.] geschrieben werden können ). Für Zeilen, die dazu passen, wird eine Ersetzung durchgeführt, die alles bis einschließlich des ersten Punktes entfernt.

Mit awk , etwas langatmig im Vergleich zu oben:

$ awk -F '.' -vOFS='.' 'NF > 2 { n=split($0, a); $0=""; for (i=2;i<=n;++i) $(NF+1)=a[i] } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Wenn hier mehr als zwei durch Punkte getrennte Felder vorhanden sind, teilen wir die aktuelle Zeile in Punkte auf und erstellen dann den aktuellen Datensatz daraus neu, wobei wir das erste Feld überspringen. Die nachgestellte 1 am Ende bewirkt, dass jede Zeile (geändert oder nicht) gedruckt wird.

Kürzeres awk auf die gleiche Weise wie sed Lösung:

$ awk -F '.' 'NF > 2 { sub("^[^.]*\.", "") } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Linux
  1. Wie fügt man Text vor der ersten Zeile einer Datei ein?

  2. Ersetzen Sie eine Zeile durch einen anderen Inhalt mit Sed und Parallel für eine große Datei?

  3. Linux – Dekomprimieren und Entarchivieren der .tar.gz-Datei mit Cat, Tar und Gzip auf einer Befehlszeile?

  4. Zusätzliche Kopfzeilen außer der ersten Zeile aus der Datei entfernen?

  5. Wie ändere ich die Standardzeilenlänge für Od und Hexdump?

Löschen Sie die ersten fünf Zeichen in einer beliebigen Zeile einer Textdatei unter Linux mit sed

Das Konzept von 'Hold space' und 'Pattern space' in sed

Drucken Sie den Inhalt von mehr als einer Datei in einem Zip-Archiv

So berühren Sie eine Datei und mkdir bei Bedarf in einer Zeile

xargs Substitution von mehr als einem Argument

Entfernen und Hinzufügen von Berechtigungen mit numerischer Notation in derselben Zeile