Com o GNU sed
:
sed -e '1i ;;' -e '$a ;;'
É composto por duas expressões sed
:
-
1i ;;
insere (i
);;
(nova linha incorporada) antes da primeira linha (1
) -
$a ;;
appends (a
);;
(nova linha incorporada) após a última linha ($
)
Exemplo:
$ cat foo.txt
sdas
adas
$ sed -e '1i ;;' -e '$a ;;' foo.txt
;;
sdas
adas
;;
Como você tem todos os arquivos em add.txt
, assumindo que nenhum nome de arquivo contenha nenhum caractere de IFS
(espaço, tabulação, nova linha por padrão) nem caracteres curinga ( *
, ?
, []
), Você pode fazer o seguinte para editar os arquivos em vigor com uma extensão .bak
como backup do original:
sed -i.bak -e '1i ;;' -e '$a ;;' -- $(cat add.txt)
Sem um backup:
sed -i -e '1i ;;' -e '$a ;;' $(cat add.txt)
Quando -i
é usado, os arquivos são tomados separadamente, em vez de um único fluxo, então estamos prontos. Sem -i
, precisamos usar a opção -s
para obter fluxos separados para arquivos.
Ou leia os nomes dos arquivos, separados por nova linha e faça a operação um por um, com backup:
while IFS= read -r f; do sed -i.bak -e '1i ;;' -e '$a ;;' -- "$f"; done <add.txt
sem backup:
while IFS= read -r f; do sed -i -e '1i ;;' -e '$a ;;' -- "$f"; done <add.txt