2012-03-27 20 views
0

Ich habe die folgenden Links in einer SQL-Dump-Datei (.sql). Ich muss 'sed oder grep mit Regex' oder etwas verwenden, um jedes Vorkommen von #cheese-pasta= und was auch immer dahinter ist einschließlich Schrägstrich zu ersetzen.Suchen und Ersetzen Zeichenfolge und was folgt

Beispiel:

<a href="somelink/#cheese-pasta=2011-13\"> 
    <a href="somelink/#cheese-pasta=\"> 

Nach dem Austausch, wird dies wie folgt aussehen:

<a href="somelink/"> 

ich jus somethin tun könnte, wie sed /#cheese-pasta=/ /g aber, Problem, dass String ist, wird durch andere Sachen, und ich folgte will das Zeug ersetzen, das es bis zu dem Zitat folgt, das das Link-Tag() beendet

Vielen Dank.

+0

Um zu klären, möchten Sie alles _inside_ das href-Attribut oder alles bis zum Ende des Tags ersetzen '>' –

+0

Hallo Michael, ich möchte die Zeichenfolge "# cheese-pasta =" ersetzen und was auch immer es folgt das Zitat –

Antwort

1

Sie könnten schreiben:

sed 's/#cheese-pasta=[^\\]*\\//g' 

die #cheese-pasta=, gefolgt von null oder mehr Zeichen ersetzt, die nicht Schrägstriche, durch einen Schrägstrich gefolgt.

Alternativ:

sed 's/#cheese-pasta=[^"]*"/"/g' 

(gleiches Konzept, aber mit " statt \ das Ende des Textes finden zu ersetzen).

+0

Danke Ruakh. Das macht es. Wenn ich dir zwei Fragen stellen kann. (1) Wo kann ich Dokumentation dafür sehen, speziell mit [^ \\]? (2) wenn ich nicht möchte, dass der letzte Schrägstrich "\" ersetzt wird, wie dies midifiziert wird. Ich habe schon einige Variationen ausprobiert und sie scheinen nicht zu funktionieren. Nochmals vielen Dank –

+0

(1) 'sed' verwendet POSIX Basic Reguläre Ausdrücke ([Wikipedia] (http://en.wikipedia.org/wiki/Regular_expression#POSIX_Basic_Regular_Expressions); [spec] (http://pubs.opengroup.org/ onlinepubs/009695399/basedefs/xbd_chap09.html # tag_09_03)). (2) Sie können entweder 'sed 's/# cheese-pasta = [^ \\] * // g'' schreiben (um" # # cheese-pasta = 'plus null oder mehr Nicht-Backslash-Zeichen" mit " nichts ") oder' sed 's/# Käse-Pasta = [^ \\] * \\/\\/g'' (um "# # cheese-pasta =' plus null oder mehr Backslash-Zeichen plus eins zu ersetzen Backslash "mit" einem Backslash "). – ruakh