2017-03-20 4 views
0

Im Versuch, diesen Text mit diesem Befehl zu ersetzen, aber es funktioniert nicht:sed ersetzen eine Newline und ein Literal mit Literal?

sed -e 's/\nnumber2/number2/g' fffff > fffff 

Dies ist, was meine Datei enthält:

number1;gAMMA 
number2;gat 
number1;zilla 
number2;dog 

Das ist meine erwartete Ausgabe:

number1;gAMMAnumber2;gat 
number1;zillanumber2;dog 
+0

Nummer1; gAMMAnumber2; gat Nummer1; zillanumber2; Hund – victorhernandezzero

+0

Nummer1; gAMMAnumber2; gat/n Nummer1; zillanumber2; Hund – victorhernandezzero

+0

i am Ende in der Frage stellen – victorhernandezzero

Antwort

1

awk zur Rettung!

$ awk '/^number2/ {n=1} 
     {printf "%s"(n?"\n":""), $0; n=0}' file > tmp && mv tmp file 

oder Set vielleicht ORS und verwenden print

+0

sehr vielen Dank für die Hilfe – victorhernandezzero

1

Wie bereits in den Kommentaren erwähnt, Perl wahrscheinlich besser für diese mehrzeilige Aufgabe geeignet wäre:

perl -i.bak -pe 's/(number1[^\n]*)\n/\1/' yourfile.txt 

Es gibt wahrscheinlich eine elegantere Möglichkeit, dies mit Perl zu tun, aber das ist ziemlich geradlinig. Es wird auch eine Backup-Datei mit .bak Erweiterung erstellen, wenn Sie das nicht möchten, lassen Sie den bak Teil weg.

+0

sehr vielen Dank. – victorhernandezzero