Ich habe eine lange Liste von Domain-Namen, die ich aus / etc / remotedomains entfernen muss. Sie sind wahrscheinlich nicht in einer bestimmten Reihenfolge in der Datei. Jede Domain befindet sich in einer Zeile.
Wie könnte ich die Liste durchlaufen und diese Zeile in entfernten Domänen finden und entfernen?
quelle
/etc/localdomains
und/etc/remotedomains
vor Sachen wie dies zu tun.-F
ist für den festen String-Abgleich („exakte Übereinstimmungen“) vorgesehen, erzwingt jedoch nicht , dass das Muster mit der gesamten Zeile übereinstimmt. POSIX gibt das-x
Flag an, um Übereinstimmungen auf Fälle zu beschränken, in denen ein Muster mit der gesamten Zeile übereinstimmt.Verwenden Sie comm!
Von der Manpage:
Die Optionen -1, -2 und -3 deaktivieren die jeweiligen Spalten.
Es ist jedoch erforderlich, dass Dateien sortiert werden.
quelle
sed -r -i -e '/^(domain1|domain2|domain3|...|domainN)$/d' domainlist.txt
Wenn sich Ihre Liste der zu löschenden Domains in einer Datei befindet, gehen Sie wie folgt vor:
sed -r -i -e '/^'"$(xargs <removelist.txt|sed -e 's/ /|/g)"')$/d' domainlist.txt
Anmerkungen:
Verwenden Sie -i.bak, um eine Sicherungskopie von domainlist.txt zu erstellen
Wenn removeelist.txt viele tausend Einträge enthält, kann die maximale Befehlszeilenlänge überlaufen. Dies ist kein sehr wahrscheinliches Szenario, aber etwas, das Sie beachten sollten.
Bei weiterer Überlegung kann dieses Risiko beseitigt werden mit:
quelle