Método 1
Você pode usar este comando sed
para fazer isso:
$ sed 's/\([A-Za-z]\)\+//g' file.txt
Exemplo
Usando sua entrada de amostra acima, criei um arquivo, sample.txt
.
$ sed 's/\([A-Za-z]\)\+//g' sample.txt
NAME
nice - run a program with modified scheduling priority
SYNOPSIS
nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [command [a$
Método 2
Existe também este método que remove todos os caracteres duplicados:
$ sed 's/\(.\)//g' file.txt
Exemplo
$ sed 's/\(.\)//g' sample.txt
NAME
nice - run a program with modified scheduling priority
SYNOPSIS
nice [-n adjustment] [-adjustment] [-adjustment=adjustment] [command [a$
Método 3 (apenas em maiúsculas)
O OP perguntou se você poderia modificá-lo para que apenas os caracteres maiúsculos fossem removidos. Veja como usar um método modificado 1.
Exemplo
$ sed 's/\([A-Z]\)\+//g' sample.txt
NAME
nice - run a program with modified scheduling priority
SYNOPSIS
nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [command [a$
Detalhes dos métodos acima
Todos os exemplos fazem uso de uma técnica na qual quando um caractere é encontrado pela primeira vez no conjunto de caracteres A-Z ou a-z, o valor é salvo. Quebra automática de parentes em torno dos caracteres diz sed
para salvá-los para mais tarde. Esse valor é então armazenado em uma variável temporária que você pode acessar imediatamente ou mais tarde. Essas variáveis são denominadas \ 1 e \ 2.
Então o truque que estamos usando é a primeira letra.
\([A-Za-z]\)
Então nos viramos e usamos o valor que acabamos de salvar como um caractere secundário que deve ocorrer logo após o primeiro acima, portanto:
\([A-Za-z]\).
Em sed
, também estamos usando o recurso de pesquisa e substituição, s/../../g
. O g
significa que estamos fazendo isso globalmente.
Então, quando encontramos um caractere, seguido por outro, nós o substituímos por apenas um do mesmo caractere.