Quero excluir a 5ª palavra de cada linha em um arquivo.
O conteúdo atual do arquivo:
File is not updated or and will be removed
System will shut down f within 10 seconds
Please save your work 55 or copy to other location
Kindly cooperate with us D
Saída esperada:
File is not updated and will be removed
System will shut down within 10 seconds
Please save your work or copy to other location
Kindly cooperate with us
text-processing
sed
awk
pmaipmui
fonte
fonte
-f
não é suportado no meucut
(GNU), pelo menos ..--complement
bandeira de simplificar as coisas:cut --complement -d ' ' -f5
. Lembre-se de redirecionar a saída para um novo arquivo e depoismv
sobre o original.awk: remova o 5º campo
Se você deseja salvar o arquivo no local: /programming//q/16529716/7552
Você pode simplesmente apagar o conteúdo do 5º campo, mas isso deixa 2 separadores de campo de saída consecutivos:
fonte
Com o POSIX sed:
fonte
_
e mais nada então:blank:
ou:space:
?\(
serve o grupo de captura\)
?A Glenn ofereceu uma solução equivalente a
Como ele e outros salientaram, esse
Um truque para corrigir o terceiro problema é
Isso ainda deixará um ou mais espaços adicionados no final de qualquer linha que contenha cinco ou menos palavras. Se você conseguir identificar uma palavra que nunca aparecerá na entrada,
vai lidar com isso mesmo (mas ainda deixa os problemas 1 e 2).
fonte
Um mais robusto (sed leva o maior padrão possível e o padrão
*
pode faltar a separação ou a palavra na primeira versão), mas uma versão um pouco mais longafonte
sed 's/[^[:blank:]]*//5'
sed 's/[[:blank:]*[^[:blank:]]*//5'
é melhor. Muito bom ponto. Eu suspeitava que sed tomar cada caractere único como uma entidade, mas é preciso maior padrão unbreaked como entidadesed 's/[[:blank:]][^[:blank:]]*//4'
removerá completamente o 5º campo.sed 's/[[:blank:]][^[:blank:]][^[:blank:]]*//4'
, ou, w / GNU / BSD / toyboxsed
s:sed -E 's/[[:blank:]][^[:blank:]]+//4'
.Perl.
fonte
Outra possibilidade, assumindo o corte do GNU:
fonte
Usando Perl> 5.10 (e produzindo com êxito todas as linhas: 0)): -
fonte