J'ai une longue liste de noms de domaine que je dois supprimer de / etc / remotedomains. Ils ne sont probablement pas dans un ordre particulier dans le fichier. Chaque domaine est sur une seule ligne.
Comment pourrais-je parcourir la liste et trouver cette ligne dans des domaines distants et la supprimer?
la source
/etc/localdomains
et/etc/remotedomains
avant de faire des choses comme ça.-F
est pour une correspondance de chaîne fixe («correspondances exactes»), mais elle ne force pas le modèle à correspondre à la ligne entière. POSIX spécifie l'-x
indicateur pour limiter les correspondances aux cas où un modèle correspond à la ligne entière.Utilisez comm!
Depuis la page de manuel:
Les options -1, -2 et -3 désactivent les colonnes respectives.
Il nécessite cependant que les fichiers soient triés.
la source
sed -r -i -e '/^(domain1|domain2|domain3|...|domainN)$/d' domainlist.txt
Si votre liste de domaines à supprimer se trouve dans un fichier, alors:
sed -r -i -e '/^'"$(xargs <removelist.txt|sed -e 's/ /|/g)"')$/d' domainlist.txt
Remarques:
Utilisez -i.bak pour que sed fasse une sauvegarde de domainlist.txt
Si removelist.txt a plusieurs milliers d'entrées, il peut dépasser la longueur maximale de la ligne de commande. Ce n'est pas un scénario très probable, mais quelque chose que vous devez savoir.
Après réflexion, ce risque peut être éliminé avec:
la source