Löschen bis zum Ende der Zeile nach einer Übereinstimmung, Zeilen nicht übereinstimmen

8

Ich habe eine Datei der folgenden Form:

%Vor%

In jeder Zeile, die die Zeichenfolge "-MIB" enthält, möchte ich den folgenden Text bis zum Ende der Zeile löschen.

Der folgende Befehl scheint wie vorgesehen zu funktionieren:

%Vor%

Mein Problem ist, dass es auch die Zeilen löscht, wo mein Muster nicht gefunden wurde. Hier würde die Zeile "SEHR INTERESSANTES TEXT" gelöscht. Ich bin mit sed nicht wirklich vertraut. Was mache ich falsch? Ist sed für diese Art der Behandlung geeignet?

    
Youri_Margarine 25.06.2013, 12:14
quelle

3 Antworten

2

Sie müssen die Option -n weglassen. Schau dir Ссылка

an     
ctn 25.06.2013, 12:22
quelle
3

Ich habe Ihre sed bearbeitet. Probieren Sie das aus,

%Vor%

Hier,

-i - führt die Änderungen in der Originaldatei aus und übernimmt die Sicherung der Originaldatei in der Erweiterung .bak

    
sat 25.06.2013 12:32
quelle
1
Die Option

sed -n unterdrückt den Standarddruck, der später aktiviert wird, wenn Sie die Option p nach Ihrer sed -Anweisung setzen.

In Ihrem obigen Beispiel sagen Sie, dass sed das Drucken aller Zeilen unterdrückt und dann nur die Zeilen druckt, bei denen die Ersetzung erfolgreich durchgeführt wurde. Daher wird die Zeile, in der keine Substitution vorgenommen wird, nie gedruckt.

Sie müssen die -n -Option und p von Ihrem Befehl entfernen:

%Vor%     
jaypal singh 25.06.2013 12:35
quelle

Tags und Links