2016-04-13 17 views
0

Ich habe einen unten Satz von Zeilen in einer Datei würde Ich mag eine neue Zeile nach den Ausgängen mit dem gleichen Inhalt der Zeile einzufügen, sondern von uat_reset_fwd_outputs sollte es Test_sample_dataWie Einfügen von Zeile der Musterübereinstimmung in der nächsten Zeile?

[serverClass:UAT_SAI_Forwarder:app:uat_sai_inputs] 
[serverClass:UAT_SAI_Forwarder:app:uat_reset_fwd_outputs] 

[serverClass:UAT_TEST_Forwarder:app:uat_test_inputs] 
[serverClass:UAT_TEST_Forwarder:app:uat_reset_fwd_outputs] 

The output should look like below: 

[serverClass:UAT_SAI_Forwarder:app:uat_sai_inputs] 
[serverClass:UAT_SAI_Forwarder:app:uat_reset_fwd_outputs] 
[serverClass:UAT_SAI_Forwarder:app:Test_sample_data] 

[serverClass:UAT_TEST_Forwarder:app:uat_test_inputs] 
[serverClass:UAT_TEST_Forwarder:app:uat_reset_fwd_outputs] 
[serverClass:UAT_TEST_Forwarder:app:Test_sample_data] 

Antwort

0

verwenden:

perl -lne 'print;if(/uat_reset_fwd_outputs/){s/uat_reset_fwd_outputs/Test_sample_data/;print $_}' your_file 

Wenn Sie an Ort und Stelle Ersatz tun wollen, unten verwenden:

perl -i -lne 'print;if(/uat_reset_fwd_outputs/){s/uat_reset_fwd_outputs/Test_sample_data/;print $_}' your_file 
0

Mit sed sein:

sed 's/\(^.*\):.*outputs.*$/\0\n\1:Test_sample_data]/g' file.txt 

Dieser Befehl stimmt mit jeder Zeile überein, die den String "outputs" enthält, erfasst den ersten Teil der Zeile (in \ 1) und hängt "Test_sample_data" an diesen an.

+0

Dies ist die Zeichenfolge Einstimmungsmuster „Ausgänge“ zu Test_sample_data ersetzen“Aber ich brauche das. Ausgabe sollte in der nächsten Zeile des Übereinstimmungsmuster angehängt werden Ausgabe wie folgt aussehen sollte:. [Serverclass: UAT_TEST_Forwarder: App: uat_test_inputs] [Serverclass: UAT_TEST_Forwa rder: app: uat_reset_fwd_outputs] [Server-Klasse: UAT_TEST_Forwarder: app: Test_sample_data] – Sai

+0

Es ersetzt nicht die Ausgänge Linie. Es wird eine neue Zeile angehängt. Das macht '\ 0 \ n \ 1'. Hast du versucht, meinen Befehl auszuführen? – dogbane

+0

ja, ich habe es versucht und die Ausgabe wie folgt: sed 's /\(^.*\):.* Ausgaben. * $/\ 0 \ n \ 1: Test_sample_data]/g' pesting [serverClass : UAT_SAI_Forwarder: App: uat_sai_inputs] 0n [Serverclass: UAT_SAI_Forwarder: App: Test_sample_data] [Serverclass: UAT_TEST_Forwarder: App: uat_test_inputs] 0n [Serverclass: UAT_TEST_Forwarder: App: Test_sample_data] – Sai

0

Try this:

sed '/:[^:]*outputs] *$/{h;s//:Test_sample_data]/;x;G}' file 

Update:

Die neue Linie wird auf jede Zeile mit outputs] Endung angehängt werden.

+0

Es funktioniert nicht. In der Frage gibt es eine kleine Korrektur. uat_reset_fwd_outputs ist nicht konstant. für eine Instanz gab ich uat_reset_fwd_outputs, es gibt viele Zeilen in der Datei, die mit Ausgaben enden. Außerdem möchte ich meine GNU-Version nicht veröffentlichen. Ich benutze Mac. – Sai

+0

Ich aktualisierte meine Antwort. – SLePort

Verwandte Themen