Outra maneira de fazer isso:
rev input | cut -c2- | rev | cut -c2-
(Nota: com o GNU cut
, ele só funciona para caracteres feitos de apenas um byte (como no seu exemplo)).
Estou tentando remover o primeiro e o último caractere de cada linha em um arquivo de texto e salvar a versão truncada resultante em um novo arquivo. Alguém tem uma idéia sobre como fazer isso de forma eficiente usando awk
ou outros programas / comandos do Linux especificamente para arquivos grandes?
(s,2,4,5,6)
"s,1,5,5,2"
{z,0,4,5,3}
[y,2,4,5,5]
(y,4,4,5,7)
(r,20,4,5,7)
(e,9,4,5,2)
s,2,4,5,6
s,1,5,5,2
z,0,4,5,3
y,2,4,5,5
y,4,4,5,79
r,20,4,5,7
e,9,4,5,2
Conforme a pergunta, exclua a última e a primeira palavra do arquivo de entrada, conforme abaixo:
sed 's/.$//; s/^.//' inputfile
Existem muitas possibilidades, como sempre
sed 's,.\(.*\).$,,g' your_file
,
- o delimitador sed, pode ser qualquer outro caractere também, dado que é escapado onde for necessário. .
Corresponde a um único caractere \(.*\)
- Agrupe a parte restante, e esta é armazenada para recuperar ainda mais. .
Corresponde a um único caractere novamente $
- fim da linha
- imprime o texto correspondido pelo grupo acima g
substitui globalmente na linha. Você também pode fazer isso com awk
, se preferir
awk '{print substr($0,2,length()-2);}' input.txt > output.txt
tr -d '()[]{}"' < your_file
Isso também deve funcionar. É bem "traduzir" cada um dos personagens para nada (delete).
A desvantagem é que ele os excluirá se eles não forem o primeiro / último caractere também. Ele também perderá todos os caracteres finais que você não listar no ()[...
.
Tags text-processing awk sed