A melhor ferramenta para edição in-loco de arquivos não interativa é ex.
ex -sc '%s/\(\.com\).*/\1/ | x' file.txt
Se você usou vie já digitou um comando que começa com dois pontos, :você usou um comando ex. É claro que muitos dos comandos mais avançados ou "sofisticados" que você pode executar dessa maneira são extensões do Vim (por exemplo :bufdo) e não estão definidos nas especificaçõesex do POSIX , mas essas especificações permitem um nível verdadeiramente surpreendente de poder e flexibilidade em sistemas não visuais. edição de texto (interativa ou automatizada).
O comando acima possui várias partes.
-sativa o modo silencioso para se preparar expara o uso em lote. (Suprimir as mensagens de saída et. Al.)
-cespecifica o comando a ser executado assim que o arquivo ( file.txtneste caso) for aberto em um buffer.
%é um especificador de endereço equivalente a 1,$— significa que o seguinte comando é aplicado a todas as linhas do buffer.
sé o comando substituto com o qual você provavelmente já está familiarizado. É comumente usado vie possui recursos essencialmente idênticos ao scomando desed , embora alguns dos recursos avançados do regex possam variar de acordo com a implementação. Nesse caso, de ".com" até o final da linha é substituído por apenas ".com".
A barra vertical separa comandos seqüenciais a serem executados. Em muitas eximplementações, você também pode usar uma -copção adicional , como:
ex -sc '%s/\(\.com\).*/\1/' -c x file.txt
No entanto, isso não é requerido pelo POSIX.
O xcomando é encerrado após a gravação de quaisquer alterações no arquivo. Diferente do wqque significa "gravar e sair", xsomente grava no arquivo se o buffer tiver sido editado. Portanto, se o seu arquivo não for alterado, o registro de data e hora será preservado.
.comapenas em vez de remover tudo depois e incluindo o primeiro/caractere? E se você tivesse um URL comoen.wikipedia.org/wiki/Ubuntuna sua lista?