O arquivo é:
#Welcome to the file
#this is a file and it ends on "exit 0"
#Here are unknown number of lines
exit 0
Precisa ter essas linhas uma após a outra:
echo deadline > /sys/block/sda/queue/scheduler
echo 1 > /sys/block/sda/queue/iosched/fifo_batch
Então parece com isso:
#Welcome to the file
#this is a file and it ends on "exit 0"
#Here are unknown number of lines
echo deadline > /sys/block/sda/queue/scheduler
echo 1 > /sys/block/sda/queue/iosched/fifo_batch
exit 0
PROBLEMAS - comando dentro do comando dentro do comando com muitas linhas \n
Por enquanto eu tenho o comando sed -i 's/exit 0/echo deadline > /sys/block/sda/queue/scheduler\necho 1 > /sys/block/sda/queue/iosched/fifo_batch\nexit 0/gp' /usr/file
, mas algo está errado - não funciona.
Atualização 1
"SLASHES" /
to \/
: descobri que a solução para barras usa \/
e barras invertidas \
.
Então agora meu comando funciona sed -i 's/exit 0/echo deadline > \/sys\/block\/sda\/queue\/scheduler\necho 1 > \/sys\/block\/sda\/queue\/iosched\/fifo_batch\nexit 0/' /usr/file
Mas ele precisa ser modificado, porque agora ele encontra todas as expressões, mas como é que apenas encontra uma linha que não contém mais nada? Por isso, não substitui o que está em exit 0
no comentário de arquivos de exemplo.
Atualização 2
Pelo menos a linha que começa com ^
: encontrada para tornar a solução para este arquivo sed 's/^exit 0/\necho deadline > \/sys\/block\/sda\/queue\/scheduler\necho 1 > \/sys\/block\/sda\/queue\/iosched\/fifo_batch\nexit 0/' /usr/file
, mas caso o arquivo de texto tenha linhas:
exit 0
exit 0 means exiting
Em seguida, não posso usar ^
para encontrar a linha que começa com a expressão.
Então, a melhor maneira seria que eu não encontrasse como encontrar a linha exata contendo apenas a expressão ou encontrar a linha de expressão e nem todas as expressões?
Atualização 3
Linha exata ^
& amp; $
: expulsa ^
não limita nada no lado esquerdo e $
nada está no lado direito então agora a solução de trabalho para 1. solução é sed -i 's/^exit 0$/\necho deadline > \/sys\/block\/sda\/queue\/scheduler\necho 1 > \/sys\/block\/sda\/queue\/iosched\/fifo_batch\nexit 0/' /usr/file
Eu quero aprender pelo menos 3 maneiras usando 1 comando de linha. Como:
- substitua a linha encontrada por 3 linhas com o comando contendo símbolo conforme mencionado
- encontrou linha completa e não apenas expressão e adicionou duas linhas antes de ser encontrada
- adicione 2 linhas 1 linha antes do fim