2017-01-19 3 views
2

Ich habe eine Liste von IP: PORT in TXT-Datei, sie sind Proxies. Ich habe Fall, wo ich es entfernen, wenn es nicht funktioniert (Proxy)Entfernen IP-Adresse in Variable mit sed

sed -i "/$proxy[^0-9]/d" proxy.txt 

Aber es funktioniert nicht. Ich versuche, IP zu löschen: PORT (Zeile enthält die IP: PORT) in Variable $ Proxy angegeben, zum Beispiel 78.102.43.251:8080 mit sed Was auch immer ich versuche, ich lösche mehrere Zeilen statt nur eine in Variable angegeben. In den Zeilen ist nichts außer IP: PORT Danke

Inhalt des proxy.txt

79.155.89.121:8080 
36.78.131.82:3128 
115.84.178.37:3128 
183.88.112.146:8080 
205.237.163.78:80 
162.243.202.25:80 
186.219.106.4:8080 
154.72.192.154:8080 

$ proxy Variable wie folgt definiert ist:

proxy.txt | while read -r proxy; do 
+0

geben Sie bitte eine [MCVE] so können wir – fedorqui

+0

Probe von dem, was besser testen? Proxy.txt? – Darktwen

+0

Ja, das, so können wir sehen, Eingabe und erwartete Ausgabe – fedorqui

Antwort

2

ich FreeBSD in meinem Rechner haben, und diese Befehl funktioniert für mich:

proxy="152.16.12.15:1515" 
sed -i -e "s/$proxy//g" proxy.txt 

Die obige Antwort ersetzt $ proxy string durch leer. Es erzeugt Leerzeilen, die nicht wünschenswert sind.

Die Arbeits Antwort (aus den Kommentaren) ist:

sed -i.bak "s/^$proxy/d" file 
+1

Warum '/ g'? Warum '-e'? – fedorqui

+0

Es ist eine Ersetzung, sucht nach einer Zeichenfolge und ändert diese mit einer anderen. '/ g' beendet die Substitution. –

+0

Ändert es mit //? Also im Grunde verwendet Sie ersetzen anstelle von/d zum Löschen? – Darktwen

Verwandte Themen