awk
A entrada contém apenas letras e numerais
Adicione um caractere de nova linha após cada [[:alpha:]]+
(sequência de letras) e após cada [[:digit:]]+
(sequência de numerais):
awk '{ gsub(/([[:alpha:]]+|[[:digit:]]+)/,"&\n",$0) ; printf $0 }' filename
(O &
é awk
abreviado para a sequência correspondente.)
A entrada contém outros caracteres (por exemplo, pontuação)
Como antes, mas agora também lidando com substrings de caracteres [^[:alnum:]]+
(não-alfabéticos, não numéricos):
awk '{ gsub(/([[:alpha:]]+|[[:digit:]]+|[^[:alnum:]]+)/,"&\n",$0) ; printf $0 }' filename
Números negativos e frações decimais
Trate -
(hífen) e .
(período) como números:
awk '{ gsub(/([[:alpha:]]+|[[:digit:].-]+|[^[:alnum:].-]+)/,"&\n",$0) ; printf $0 }' filename
Esses caracteres devem aparecer nas expressões [[:digit:].-]+
e [^[:alnum:].-]+
. Além disso, para ser interpretado como um hífen literal, o caractere -
deve ser último antes do colchete direito final de cada expressão; caso contrário, indica um intervalo de caracteres.
Exemplo:
[test]$ cat file.txt
string123another!!str456.001thenanotherstr-789
[test]$ awk '{ gsub(/([[:alpha:]]+|[[:digit:].-]+|[^[:alnum:].-]+)/,"&\n",$0) ; printf $0 }' file.txt
string
123
another
!!
str
456.001
thenanotherstr
-789
Um exercício para o leitor
Se o arquivo de entrada exigir, você poderá modificar o comando awk
para:
- Certifique-se de que
-
conte apenas como parte de um número, se ocorrer no início de uma sequência numérica.
- Permitir números expressos em notação científica.