hallo,
ich hab folgende zeile in einer datei
<td>Rang:</td><td width="25%">17.</td>
nun will ich mittels sed nur an die 17.
bisher hab ich es so:
sed "s/<td>Rang:<\/td><td width=\"25\%\">//" | sed "s/<\/td>//"
das geht doch aber bestimmt noch einfacher bzw. kürzer... leider bin ich der totale sed anfänger und wäre euch für ratschläge sehr dankbar.
danke!
sed -> wie gehts einfacher?
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
sed arbeitet auf Zeilenbasis daher ist das was du vorhast eher nicht so gut mit sed zu machen bzw. eine Kombination aus sed und cut eine feine Sache.
Besser wäre awk oder perl.
Wofür sed gut ist, ist das finden einer Zeile mit einem entsprechendem Muster unter vielen anderen.
Wahr ist es gibt um dein Ziel zu erreichen eine Vielzahl an Möglichkeiten.
markus
edit:
sehe gerade das noch etwas fine tuning angesagt wäre
- den Punkt nach der Zahl möchtest du ja haben
- die Leerzeilen müssen nicht sein
Besser wäre awk oder perl.
Wofür sed gut ist, ist das finden einer Zeile mit einem entsprechendem Muster unter vielen anderen.
Code: Alles auswählen
markusgattol@pc1:/tmp$ cat file
<td>Rang:</td><td width="25%">17.</td>
markusgattol@pc1:/tmp$ echo -e "1 \n 2\n 3 and some text ..." >> file && cat file
<td>Rang:</td><td width="25%">17.</td>
1
2
3 and some text ...
markusgattol@pc1:/tmp$ sed -n '/\([[:digit:]]*\.\)/p' file | awk 'BEGIN {FS = ">"} {print $4}' | cut -d . -f1
17
markusgattol@pc1:/tmp$
markus
edit:
sehe gerade das noch etwas fine tuning angesagt wäre
- den Punkt nach der Zahl möchtest du ja haben
- die Leerzeilen müssen nicht sein
Hallo AliceD,
Deine Zeile etwas gekürzt:
zusammengefasst
oder
Gruß fuzzy
Deine Zeile etwas gekürzt:
Code: Alles auswählen
sed 's/.*">//' | sed 's/<.*//'
Code: Alles auswählen
sed 's/.*">//;s/<.*//'
Code: Alles auswählen
sed 's/.*">\(.*\)<.*/\1/'