Deseja substituir os endereços IP pela string "[redacted]"? Não há necessidade de grep
then sed
em um loop. sed
te dá um loop e "grepping" de graça.
sed 's/\^~[[:digit:]]\+\(\.[[:digit:]]\+\)\{3\}/^~[redacted]^~/' logfile
Eu tenho uma pergunta sobre o uso de alguns mais avançados grep, awk, sed. Eu tenho um arquivo de log, para um MTA proprietário, que contém IP em uma seqüência de caracteres, delimitada por [redacted]^~x.x.x.x^[redacted]
. Até agora, todos os meus grepping, awking e sedding não me levaram muito longe.
Este arquivo de log tem 331520 linhas nele. Meu objetivo era simplesmente pegar o ip, depois fazer um loop for com o sed para / $ i / redacted '. Estou incluindo uma amostra de uma das entradas de log. Se todos vocês tiverem alguma ideia, eu ficaria muito grato.
Jun 4 15:21:52 host.name mta-name: 13388^~88/CC-04671-FCA0DCF4^~D^~<redactedmessageid>^~@^[email protected]^~redacted.hostname^~000.00.000.000^~port^~esmtp^~^~external_routing_nobounce^~0^~0.51^~subjectofmessage^~250 2.6.0 <redactedmessageid> [InternalId=2178458] Queued mail for delivery
Eu percebi isso. Mais páginas do homem. Uma pequena modificação do meu comando grep
com -o
me mostrou uma lista dos endereços, com sort | uniq
, consegui uma lista
grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' log.file | sort -n | uniq