Eu tenho uma longa lista de nomes de domínio que preciso remover do / etc / remotedomains. Eles provavelmente não estão em nenhuma ordem específica no arquivo. Cada domínio está em uma linha.
Como eu poderia percorrer a lista e encontrar essa linha em domínios remotos e removê-la.
command-line
shell
grep
text-processing
xenoterracida
fonte
fonte
/etc/localdomains
e/etc/remotedomains
antes de fazer coisas assim.-F
é para correspondência de cadeia fixa ("correspondências exatas"), mas não força o padrão a corresponder à linha inteira. POSIX especifica o-x
sinalizador para limitar as correspondências às instâncias em que um padrão corresponde à linha inteira.Use comm!
Na página do manual:
As opções -1, -2 e -3 desabilitam as respectivas colunas.
No entanto, exige que os arquivos sejam classificados.
fonte
sed -r -i -e '/^(domain1|domain2|domain3|...|domainN)$/d' domainlist.txt
Se sua lista de domínios a excluir estiver em um arquivo, então:
sed -r -i -e '/^'"$(xargs <removelist.txt|sed -e 's/ /|/g)"')$/d' domainlist.txt
Notas:
Use -i.bak para que o sed faça um backup do domainlist.txt
Se removelist.txt tiver muitos milhares de entradas, poderá exceder o comprimento máximo da linha de comando. Este não é um cenário muito provável, mas algo que você deve estar ciente.
Em uma reflexão mais aprofundada, esse risco pode ser eliminado com:
fonte