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.