Inserir nova linha após várias quantias de caracteres numéricos

1

Eu preciso inserir uma nova linha, ou delimitador, em um arquivo de texto após uma string "numérica" composta por 10 números, depois um "-" e depois 1 a 4 números ...

Exemplo:

blahblahrandomtext,1234567890-1234blahblah

Deve ser:

blahblahrandomtext,1234567890-1234, blahblah

Ou:

blahblahrandomtext,1234567890-1234

blahblah

Note que o primeiro conjunto de números será sempre de 10 caracteres, os números após o - serão 1,2,3 ou 4 caracteres, por exemplo,

1234567890-1
1234567890-12
1234567890-123
1234567890-1234

Eu usei muito sed para tarefas semelhantes, mas não consigo encontrar uma maneira de trabalhar com o último conjunto de números que variam de 1 a 4 caracteres.

    
por Kneel B 15.11.2017 / 16:51

2 respostas

0

Se você sabe como fazer isso com um número fixo de dígitos, você deve saber como fazê-lo com um máximo e mínimo de caracteres repetidos: Dentro do \{\} coloque o mínimo e o máximo separados por uma vírgula como esta:

sed 's/[0-9]\{10\}-[0-9]\{1,4\}/&,\n/'

para o GNU sed ; para outras versões, use uma barra invertida seguida por uma nova linha literal em vez de \n

    
por 15.11.2017 / 17:05
3

sed solução (para inserir o delimitador , ):

sed -E 's/(^|[^0-9])[0-9]{10}-[0-9]{1,4}/&, /' file
  • -E - aplica expressões regulares estendidas
  • (^|[^0-9]) corresponde ao início de uma linha ou a um não dígito. Isso garante que nenhum número com mais de 10 dígitos corresponda a
  • & - aponta para a string combinada inteira

A saída:

blahblahrandomtext,1234567890-1234, blahblah
    
por 15.11.2017 / 17:06

Tags