
93578
08.04.2020, aktualisiert um 12:37:33 Uhr
Suche nach einer Moeglichkeit im AWK oder cut die Inhalte von einer bestimmten Spalte bis Zeilenende anzeigen zu lassen
Hallo geehrte Mitsreiter/innen,
als erstes wünsche ich Euch allen in diese Zeit viel Gesundheit, Optimismus und Freude!
Ich habe eine kleine Frage an Linux-Gurus.
Ich habe folgende Datei:
Ich brauche aber nur alle inhalte ab Spalte 2 ausgeben:
muster:2
muster;;4
mu-ster6
:muster8
muster10.25
mu ster12
Ich bin auf der Suche nach einer Moeglichkeit im AWK/cut die Inhalte von einer bestimmten Spalte (z.B. hier $2) bis Zeilenende anzeigen zu lassen.
Ich wollte cut oder awk mehrere Zeichen als Trennzeichen vorgeben. So was, wie (;|:|\.|\=|\+| |\-). Ist das möglich? Keine Lust extra Befehlszeile für jedes Trennzeichen nacheinander zu machen.
als erstes wünsche ich Euch allen in diese Zeit viel Gesundheit, Optimismus und Freude!
Ich habe eine kleine Frage an Linux-Gurus.
Ich habe folgende Datei:
muster1 muster:2
muster3;muster;;4
muster5:mu-ster6
muster7::muster8
muster9|muster10.25
muster11.mu ster12
Ich brauche aber nur alle inhalte ab Spalte 2 ausgeben:
muster:2
muster;;4
mu-ster6
:muster8
muster10.25
mu ster12
Ich bin auf der Suche nach einer Moeglichkeit im AWK/cut die Inhalte von einer bestimmten Spalte (z.B. hier $2) bis Zeilenende anzeigen zu lassen.
Ich wollte cut oder awk mehrere Zeichen als Trennzeichen vorgeben. So was, wie (;|:|\.|\=|\+| |\-). Ist das möglich? Keine Lust extra Befehlszeile für jedes Trennzeichen nacheinander zu machen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 563742
Url: https://administrator.de/forum/suche-nach-einer-moeglichkeit-im-awk-oder-cut-die-inhalte-von-einer-bestimmten-spalte-bis-zeilenende-anzeigen-563742.html
Ausgedruckt am: 01.05.2025 um 05:05 Uhr
18 Kommentare
Neuester Kommentar
Moin,
So was wie etwa:
?
lks
PS: Kann man auch ganz leicht durch googlen finden.
https://www.google.com/search?q=awk+multiple+delimiters
https://www.google.com/search?q=awk+multiple+columns
Zitat von @93578:
Ich bin auf der Suche nach einer Moeglichkeit im AWK/cut die Inhalte von einer bestimmten Spalte (z.B. hier $2) bis Zeilenende anzeigen zu lassen.
Ich bin auf der Suche nach einer Moeglichkeit im AWK/cut die Inhalte von einer bestimmten Spalte (z.B. hier $2) bis Zeilenende anzeigen zu lassen.
So was wie etwa:
awk -F '[;:.=+ -]' '{ for (x=2; x<=999; x++) { printf" ", $x } }'
?
lks
PS: Kann man auch ganz leicht durch googlen finden.
https://www.google.com/search?q=awk+multiple+delimiters
https://www.google.com/search?q=awk+multiple+columns

awk -F'[ ;:|.]+' '{rest=substr($0,length($1)+1);sub(/[ ;:|.]+/,"",rest);print rest}' test.txt

Klappt hier einwandfrei, Ergebnis mit deinen Daten, du musst schon den Dateinamen hinten anpassen ...:
btw. guckst du auch
https://stackoverflow.com/questions/19154996/awk-split-only-by-first-occ ...
muster:2
muster;;4
mu-ster6
muster8
muster10.25
mu ster12
btw. guckst du auch
https://stackoverflow.com/questions/19154996/awk-split-only-by-first-occ ...

Wir haben deine Datei nicht
... Meine Glaskugel hat Corona-Ferien ... Was steht denn da genau drin bzw. welches Encoding, binär usw. und sofort., welche Distri, AWK Version?
"Funktioniert nicht" ist keine Fehlermeldung.
"Funktioniert nicht" ist keine Fehlermeldung.

Dann nehm halt die Punkte als delimiter raus, oder ein nutze gleich ein sed replace der IP-Adressen wenn sowieso nur IPs am Anfang stehen, dann brauchst du das ganze von oben nicht.

Na und ???? Hab doch in meiner letzten Antwort geschrieben nimm den Punkt aus den delimitern und dem Regex raus und gut is oder wenn nur IPs am Anfang gleich sed per Regex die IP replacen ...
Oder ist dir das jetzt schon zu schwer zwei Punkte aus meinem Code zu löschen? Schon wieder Freitag ...
Oder ist dir das jetzt schon zu schwer zwei Punkte aus meinem Code zu löschen? Schon wieder Freitag ...
awk -F'[ ;:|]+' '{rest=substr($0,length($1)+1);sub(/^[ ;:|]+/,"",rest);print rest}' test.txt

Hier die einfache Regex-Variante für die IP, kannst du dir ja abgucken und dann stattdessen die genauere IP-Regex einbauen ...
oder noch simpler

So denn viel Spaß hier noch.
Ciao.
sed -re 's/^[0-9]{1,3}(\.[0-9]{1,3}){3}[ ;:|]+//' test.txt
sed -re 's/^[0-9.]+[ ;:|]+//' test.txt
Kann aber nicht finden wie?
Nicht finden, nachschlagen ist gesünder für die Birne! So denn viel Spaß hier noch.
Ciao.
Zitat von @93578:
Danke! Aber den Punkt brauche ich auch.
Danke! Aber den Punkt brauche ich auch.
Naja, man könnte ja auch eganz einfach auf den profanen Gedanken kommen, daß die IP-Adresse vier Spalten bilden und man daher erst ab Spalte 6 statt 2 loslegt.
Also ehrlich. Due soltest Deinen eigenen Grips auch mal ein wenig ansprengen und nicht Dir alles vorkauen lassen.
Zu meiner zeit hat man erstmal sowas gelesen und erst dann sich an solche "schwierigen" Aufgaben gewagt.
lks
PS: "sed & awk" von Dale Dougherty und Arnold Robbins, erschienen bei O'Reilly kann ich nur empfehlen.
Zitat von @93578:
Ich habe von Linux gar keine Ahnung.
Ich habe von Linux gar keine Ahnung.
awk und sed sind von linux unabhängig. Die gibt es auf fast jedem ordentlichen System seit über 40 Jahren.
Bringe mir quasi während Bearbeitung bei.
Eben nicht. Im Forum sich alles vorkauen lassen ist nicht "beibringen". Sondern manpages und Bücher lesen und ausprobieren!
lks