Wie zu sed benutzen Sie zum löschen einer Zeichenfolge mit Platzhaltern
Datei1:
<a>hello</b> <c>foo</d>
<a>world</b> <c>bar</d>
Ist ein Beispiel für die Datei wäre dies die Arbeit auf. Wie kann man entfernen Sie alle Zeichenfolgen, die eine <c>*</d>
mit sed?
- Was meinst du mit "entfernen Sie alle Zeichenfolgen"? Meinst du entfernen, die ganze Zeile oder nur der block von text?
- Alle Zeichenfolgen beginnend mit <c> und endet mit </d>. Das Kommando funktionierte perfekt. Jemand mit dem Befehl auch, natürlich, muss die Datei am Ende des Befehls.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die folgende Zeile entfernen, entfernen Sie alle text von
<c>
zu</d>
inclusive:Die wenig in die
s/...//
ist ein regulärer Ausdruck, nicht wirklich ein Platzhalter in der gleichen Weise wie die shell verwendet, so alles, was Sie können in einem regulären Ausdruck können Sie in es gesetzt.wenn alle Ihre Daten wie im Beispiel
Großen Schweizer-Armee-Messer!
Ich es geändert zu ziehen-header-Informationen der E-Mails für ein Archivierungs-script. Es beteiligt die Umbenennung des IMAP-E-Mails mit Datum und Absender-info (ansonsten IMAP nur mit den Nummern 1, 2, 3, etc.). Hier sind die zwei mods:
for i in $mailarray; do date -d $(less -f $i | grep -im 1 "Date:\ " | sed -e 's_^.*\(ate: \)__') +%F_%T%Z; done
for i in $mailarray; do less -f "$i" | grep -iEm 1 "From:\ " | sed -e 's_^.*\(rom\).*<\|^.*\(rom:\).__' | sed -e 's_@.*$__'; done
Gespeichert eine große Menge belanglosen Codierung. Danke.