2017-09-01 4 views
0

Ich muss eine <!-- an den Anfang einer Zeile und --> an das Ende einer Zeile für jede Zeile in einer XML-Datei hinzufügen, wenn eine bestimmte Zeichenfolge vorhanden ist. so zum Beispiel, wenn BlueCard ist die Zeichenfolge ich passen wollen und die Datei sieht wie folgt zur Zeit:Wie an den Anfang und das Ende der Zeile anhängen, die ein übereinstimmendes Muster in einer Datei mit bash enthält?

RedCard 
BlueCard 
GreenCard 

ich die neue Datei aussehen soll:

RedCard 
<!--BlueCard--> 
GreenCard 

Wie dies geschehen kann, ?

Antwort

4

Mit sed:

sed 's/.*BlueCard.*/<!--&-->/' file 
+0

Danke! Genau das, was ich wollte –

+0

Gibt es eine Möglichkeit, Schlamm zu machen, tiple Suchen pro Datei? Sagen wir, ich wollte auch die Zeile mit RedCard mit # anhängen, könnte ich das alles auf einmal machen? –

+0

Vielleicht 'sed' s /.* \ (Blau \ | Rot \) Karte. *// 'Datei'? – potong

0

Sie können auch dieses Muster und dann anwenden Ersatz (s) für alle Linien, die übereinstimmt.

sed '/BlueCard/ s/.*/<!--&-->/' test 
  • & Hier wählt er alles, was auch einmal von .*
0

Versuch in awk abgestimmt ist.

awk '/BlueCard/{print "<!--" $0 "-->";next} 1' Input_file 

So suchen String Blue Card in einer Linie, wenn sie es dann drucken Sie die Kommentare mit dieser Linie findet, als nächstes unter Verwendung alle weiteren Aussagen nicht überspringen. Mit 1 wird alles gedruckt, abgesehen von der BlueCard-Zeile, da die Bedingung selbst schon erfüllt ist.

Lösung 2nd: Verwendung von Sub-Dienstprogramm von Awk hier.

awk '{sub(/BlueCard/,"<!--&-->")} 1' Input_file 

Einfach String BlauCard hier mit den Kommentaren und Druck alles dann ersetzen.

Verwandte Themen