2016-08-22 1 views
1

Ich habe eine Datei (file1.txt), die unter Text enthält:bestimmtes Wort sucht und löscht es aus der Datei in Linux

mon 
tue 
tue_day 
tuesday 
wed 

und ich möchte für ein Wort „täte“ und löschen Sie es von diesem suchen Datei. I verwendet

sed -i "/tue/d" file1.txt 

aber es löscht alle Zeilen mit Di Wort heißt Linie 2,3 und 4. Ich möchte die einzige Zeile 2 löschen, die exakt gleichen Text conatins, die ich aus der Datei entfernen möchten.

könnten Sie bitte vorschlagen?

+0

google 'regexp tutorial' und es nehmen . –

Antwort

2

Sagen Sie einfach sed, dass Sie Linien wollen, die genau "tue" sind. Wie? Voranstellen und ^ und $ anhängt Anfang und Ende der Zeile anzuzeigen:

$ sed '/^tue$/d' file 
mon 
tue_day 
tuesday 
wed 

mit in einer Variablen, verwenden Sie doppelte Anführungszeichen wie dieses gegeben, etwas zu ersetzen:

var="tue" 
sed -i "/^$var$/d" file 
+0

Danke, dass es funktioniert ... eine weitere Abfrage wie verwende ich Variable anstelle von "Di" in sed Befehl? wie jetzt benutze ich: sed -i "/ $ var/d" Datei –

+0

@SagarPatil einfach sagen 'var =" tue "' und dann 'sed -i"/^ $ var $/d "file'. Beachten Sie, dass Sie doppelte Anführungszeichen verwenden müssen, um die Variablen zu erweitern. Ich habe meine Antwort aktualisiert, um dies zu berücksichtigen. – fedorqui

+1

Überlegen Sie, den Abschnitt Ihres Skripts so kurz wie möglich zu machen: 'sed -i '/ ^'" $ var "'$/d' file'. Ich denke nicht, dass es in diesem Fall eine Rolle spielt, aber es ist ein robusterer Stil, um sich an die Gewohnheit zu gewöhnen, so dass Sie nicht von Gothcas überrascht werden, wenn Ihre Skripte größer und/oder komplizierter werden. –

Verwandte Themen