Eu gosto de usar o editor tradicional ex para operações simples de linha de comando, para reorganizar o texto nos arquivos. Por exemplo, para um simples movimento de linhas em um arquivo eu usaria algo como
foo
bar
zoo
dude
para mover o texto dude após foo gostaria de fazer
printf '%s\n' '/dude' 'd' '/foo' '-' 'put' 'wq' | ex file
, o que significa mover para o padrão dude , colocar a linha no buffer e colá-la depois de foo e wq para fechar o arquivo.
Isso funciona bem até agora, mas eu quero inserir meu texto personalizado no arquivo, dado por exemplo
example
//commented
abc
def
Eu preciso adicionar outro texto acima de //commented se o padrão abc corresponder a um arquivo se abc estiver presente e acima dele se uma linha que começa com // existir adicione outra linha //new text , por isso deve se parecer com
example
//new text
//commented
abc
def
Eu tentei fazer o seguinte, usando itextESC para inserir texto, mas não está funcionando.
printf '%s\n' '/abc' '-' '/\/\/' 'itextESC' 'wq' | ex file
Gostaria de fazer isso funcionar em ed ou ex para explorar mais sobre essa ferramenta. Gostaria de receber insights se ed/ex puder ser usado para tarefas triviais como essa.