sed insert after NUR die erste Zeile passen?
Versuchen, dies zu tun:
sed -e '/^MatchMeOnce/i\
MATCHED'
auf dem Beispiel-text:
Line1
Line2
MatchMeOnce
Line4
MatchMeOnce
Line6
Wie bekomme ich es nur auf übereinstimmung der ersten Platte auftreten und auf nicht match auf die nachfolgenden Zeilen?
Line1
Line2
MATCHED
Line4
MatchMeOnce
Line6
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte dies für Sie arbeiten:
Dieser Arbeit wird für alle Varianten von sed solange
MatcMeOnce
ist auf der 2. Zeile oder größer, oder diese (GNU sed):bietet für die oben genannten edge-Zustand:
Oder eine andere alternative (alle sed), die schlürft wird die gesamte Datei in den Speicher:
was den zusätzlichen Vorteil hat, dass wenn Sie wollen wählen der N-TEN eher als 1.
MatchMeOnce
alle Sie tun müssen, ist ändern Sie das auftreten fahne D. H. zum ändern der zweiten vorkommen:Ändern, die Letzte Stelle verwenden:
sed
(nicht so offensichtlich):awk
(offensichtlich):perl
ist auch cool...Hoffe, dass es mehr oder weniger funktioniert 🙂
GNU sed hat die
t
Befehl zu verzweigen, zu Ende des Skripts (alternativ ein bestimmtes label), wenn eine substitution entspricht.Ich persönlich verwende
perl -ne
undperl -ane
(und ich nehme an, einige Leute benutzen Ruby), es sei denn, die awk-oder sed-Lösung offensichtlichen. Aber ich weiß, es ist immer noch möglich, für einige Systeme zu haben, awk und sed ohne Perl und machen es schwierig zu installieren Perl; und dass einige Programmierer bevorzugen awk und sed unabhängig.