Eu tenho arquivos de texto grandes com seqüências delimitadas por espaço (2-5). As cadeias podem conter "'" ou "-". Gostaria de substituir, digamos, o segundo espaço por um cano.
Qual o melhor caminho a percorrer?
Usando sed eu estava pensando sobre isso:
sed -r 's/(^[a-z'-]+ [a-z'-]+\b) /\1|/' filename.txt
Alguma outra / melhor / mais simples idéias?
linux
command-line
sed
awk
dnkb
fonte
fonte
sed
arquivo info: "Nota: o padrão POSIX não especifica o que deve acontecer quando você mistura asg' and NUMBER modifiers, and currently there is no widely agreed upon meaning across
implementações sed '. Para GNU` sed', a interação é definida como: ignorar correspondências antes de NUMBERth e, em seguida, corresponder e substituir todas as corresponde a partir de NUMBERth. "sed
. Não tenho certeza se devo agradecer por me tornarsed
ainda mais útil, mas farei de qualquer maneira. ;)Você experimentou sua versão? Funcionou? Porque acho que é basicamente uma boa ideia. Eu faria um pouco diferente, no entanto:
Isso aceitará qualquer caractere em uma palavra que não seja espaço e aceitará mais de um espaço entre as duas primeiras palavras.
fonte