comando SED - endereço MAC

0

Eu uso o endereço MAC da máquina como ID do usuário e gostaria de atualizar um arquivo (display.txt) que exibirá o ID do usuário / expiração. Como faço para substituir o expdate em display.txt com a data em expdate.txt correspondente ao endereço MAC.

Eu tenho sucesso com a parte do ID do usuário, com:

sed -i "s/user/$(ifconfig eth0 |
                 grep -o -E '([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}')/" \
/user/id/display.txt > /dev/null

display.txt:

UserID: user
User expiring on expdate

expdate.txt:

user                          = 00:09:34:2C:66:AB
expdate                       = 2017-05-20
user                          = 00:09:34:29:86:6C
expdate                       = 2017-08-23

Eu gostaria de ter:

display.txt:

UserID: 00:09:34:29:86:6C
User expiring on 2017-08-23
    
por Dick 01.01.2017 / 05:34

2 respostas

0

Eu encontrei uma solução de uma linha usando grep e sed:

mac=$(ifconfig eth1 | grep -o -E '([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}'); grep "$mac" expdate.txt -A 1 | sed -r ':a;N;$!ba;s!user.*=.(..\:..\:..\:..\:..\:..).*expdate.*=.(....-..-..)!UserID: \nUser expiring on !g' > display.txt

e para validar, funciona com qualquer endereço mac com o qual testei:

mac=$(echo "00:09:34:29:86:6C") ; grep "$mac" expdate.txt -A 1 | sed -r ':a;N;$!ba;s!user.*=.(..\:..\:..\:..\:..\:..).*expdate.*=.(....-..-..)!UserID: \nUser expiring on !g' > display2.txt

Gerei a saída do zero, se você precisar de uma substituição em um arquivo existente, sugiro usar uma linguagem de templates como o bigode . A versão do Bash está em GitHub

No entanto, porque parece que você precisa reutilizar o endereço MAC (para procurar primeiro e depois para a saída), sugiro fazer um script bash e seria mais reutilizável.

    
por 19.01.2017 / 12:46
0

Ao concatenar sed outputs:

sed -e 's/user/UserID/g' expdate.txt | sed -e 's/ //g' | sed -e 's/=/: /g' | sed -e 's/expdate:/User expiring on/g' > display.txt

(É bem certo que isso poderia ser feito também com apenas um sed )

    
por 19.01.2017 / 12:58

Tags