Eu tenho uma lista separada por vírgulas neste formato bastante simples:
IPrangestart,IPrangeend,int number,date (delimited by slashes),Name (is dirty, contains spaces, dots, dashes, quotemarks etc)
As três primeiras colunas não podem estar vazias. Eu quero transformar isso em um formato viável de bloqueio de firewall padrão denotando o aleatório separado por um traço:
IPrangestart-IPrangend
Às vezes, os campos estão vazios. Qual é a maneira mais rápida e inteligente de fazer isso para milhares de linhas? Eu tentei RegEx como [A-Za-z] para cada letra e [0-9] para cada número, mas isso não resolve os problemas com o aleatório " . e coisas semelhantes especificadas acima ...
Eu tentei este RegEx, mas não sei como fazê-lo reconhecer o traço no meio(\b25[0-5]|\b2[0-4][0-9]|\b[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}
Se as colunas relacionadas ao ip estiverem sempre lá (com base no seu comentário), use
cut
para manter as duas primeiras colunas separadas por vírgula e substitua,
por-
:Se, por algum motivo, você não tiver acesso a
GNU cut
(coreutils
coisa que duvido desde que você marcou a pergunta comlinux
) e, portanto, está perdendo a--output-delimiter = -
opção:resultado
IPrangestart-IPrangeend