Comparar strings

0

Eu tenho 2 arquivos txt, em um eu tenho listas de alias e o outro é o nome dos servidores. Então, o que eu estou tentando fazer é fazer um loop a partir do arquivo alias txt linha por linha e onde ele encontrará o nome que está no outro arquivo txt (nome dos servidores) será ecoado ou contorcido em outro arquivo. Por exemplo: Neste arquivo alias.txt, temos algo parecido com isto

alias server1='ssh [email protected]'
alias server2='ssh [email protected]'
alias server3='ssh [email protected]'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

e no outro arquivo temos apenas:

server1
server2
server3

Agora, quando eu listar o alias.txt eu gostaria de compor os outros arquivos txt com os nomes de alias e me deu apenas o valor do alias. Se ele encontrar o server1, escreva para o arquivo ou faça um echo ssh [email protected] ...

O ponto principal é que eu tenho muitos alias que são como server1 (conexões ssh), mas eu gosto de alguns servidores nem todos eles e eu preciso apenas de alguns específicos (neste exemplo os que eu tenho no arquivo server.txt)

Alguma dica? :)

    
por user3523605 17.08.2014 / 17:18

1 resposta

1

Isso funcionaria para você?:

$ grep -F -f serverlist.txt alias.txt 
alias server1='ssh [email protected]'
alias server2='ssh [email protected]'
alias server3='ssh [email protected]'

Ele usa as linhas de serverlist.txt como padrões para corresponder para exibir linhas de formulário alias.txt . Dependendo dos nomes dos seus servidores, pode ser um pouco mais complicado não fornecer correspondências erradas, como se um servidor fosse nomeado apenas server .

Seria muito mais seguro converter primeiro os nomes dos servidores simples em padrões que correspondam apenas ao lado esquerdo da definição do alias:

$ sed "s/\(.*\)/^alias ='/" serverlist.txt                      
^alias server1='
^alias server2='
^alias server3='

Podemos usar -f - para ler os padrões de stdin, assim como fizemos diretamente no arquivo antes:

$ sed "s/\(.*\)/^alias ='/" serverlist.txt | grep -f - alias.txt
alias server1='ssh [email protected]'
alias server2='ssh [email protected]'
alias server3='ssh [email protected]'
    
por 17.08.2014 / 17:37