paulo1205
(usa Ubuntu)
Enviado em 09/02/2020 - 17:30h
alex_tj escreveu:
Galera,
Boa noite,
Estou fazendo uma deleção via sed.
sed -i "${var}" Arquivo.TXT
Entretanto, como o arquivo possui mais de 1 milhão de linhas, aparentemente a quantidade de linhas que foram rejeitadas pelo meu script e devem ser deletadas gerou uma lista muito maior que o sed é capaz de deletar em uma única execução, dando a seguinte mensagem de erro:
--> " /usr/bin/sed: Argument list too long"
Por que você está colocando os comandos numa variável? Você poderia colocá-los num arquivo, preferencialmente em múltiplas linhas, e depois mandar o
sed executar os comandos desse arquivo.
sed -f /tmp/comandos_de_edição.sed -i Arquivo.TXT
Sendo assim, gostaria de saber se é possível possível informar para o sed deletar por exemplo de 1.000 em 1.000 linhas, para evitar esse erro.
Por exemplo:
Suponhamos que variável $var tenha o valor:
var = 1d;2d;3d;4d;5d;6d;7d;8d;9d;10d;11d;12d;13d;14d;15d;16d;17d;18d;19d;20;
Consigo fazer esse código sed -i "${var}" Arquivo.TXT - deletar da linha 1 ao 10 na primeira execução e depois da 11 a 20 na segunda e assim sucessivamente?
Tem como, mas, para tanto, seria melhor você fazer isso apagando, em cada bloco, as últimas linhas do arquivo primeiro, e depois as linhas mais próximas do início, porque, como bem lembrado acima pelos colegas, se você apagar primeiro as linhas iniciais, a iteração seguinte vai ter números de linhas diferentes das do arquivo original.
Acima também se mencionou um outro tópico aberto por você e relacionado a este. Lendo-o, e juntando-o a este tópico aqui, eu concordo com o que foi sugerido no outro tópico por outro colega, que sugeriu que você usasse mais os recursos do próprio
shell, em vez de chamar ferramentas externas para fazer operações relativamente simples — e, pior ainda, chamando-as repetidamente e sobre os mesmos dados. Invocar ferramentas externas é ineficiente; se você precisa de eficiência, deve procurar aproveitar melhor os recursos de que dispõe, ou buscar ferramentas que ofereçam recursos mais apropriados para lidar com o problema que você tem de tratar.
Não fique acanhado de aprender coisas novas. Além de você não precisar, neste caso, de nada que seja muito difícil, existe documentação abundante para lhe ajudar no processo, bem como espaços como este aqui, com gente disposta a orientá-lo no caminho (e outros como este, em outras partes da Internet, em que talvez as respostas venham ainda mais depressa).
Fiquei com a impressão de que o tópico anterior era uma forma de identificar mudanças que seriam necessárias em um arquivo de dados, e que este seria para implementar tais mudanças. Esse é o tipo de coisa que você consegue fazer numa passada só, muito eficientemente, se usar as ferramentas e os recursos corretos.
(Comecei a brincar aqui com uma solução que acho que vai lhe ajudar bastante, mas preciso sair agora. Se conseguir, posto a referida solução mais tarde.)
... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)