Wie extrahiert man ein ganzes Wort, das Teilzeichenfolgen enthält?


7

Wenn ich eine Datei habe, die so aussieht:

example.png example.jpg example2.jpg example2.png example.swf
example2.swf example3.jpg example4.jpg example3.png example3.swf 

und ich möchte zum Beispiel die Wörter extrahieren, die swf enthalten, die Ausgabe würde ungefähr so ​​aussehen

example.swf 
example2.swf
example3.swf

Ich habe versucht grep -o "swf[^[:space:]]*", was nur ein paar druckt swf, und dann habe ich versucht grep -o '[^ ]*a\.swf[^ ]*', was nur sehr wenige Zeilen mit "swf" ausgibt. Weiß jemand was zu tun ist?


3
Sie sind nah dran, denke ich - aber wollen Sie nicht grep -o '[^[:space:]]*swf'null oder mehr Nicht-Leerzeichen vor dem swfTeilstring?
Steeldriver

@steeldriver Warum hast du das nicht als Antwort geschrieben? Du hättest meine Gegenstimme erhalten.
Sparhawk

Antworten:



5

Du kannst tun:

grep -o '[^ ]*\.swf' file.txt
  • [^ ]* Entspricht null oder mehr Nicht-Leerzeichen

  • \.swf passt wörtlich .swf

Beispiel:

% grep -o '[^ ]*\.swf' file.txt
example.swf
example2.swf
example3.swf

4

Erster Schritt

Ersetzen Sie Leerzeichen durch Linienenden mit sed

Zweiter Schritt

Filtern Sie die Ausgabe mit grep

Beispiel

sed -e s/\ /\\n/g file | grep .swf


1
simpel und einfach. guter Ansatz.
Ass
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.