A maneira mais fácil de fazer isso é na sua máquina GNU / Linux usando sed(1) . Supondo que apenas os arquivos de texto que você deseja transformar estejam no diretório:
$ for a in /path/to/directory/*txt; do sed -i '1,3{s/tag1/tagOne/g;}' "${a}"; done
O que isso faz, explicado com mais detalhes:
-
Há um loop para iterar os arquivos com os quais você deseja trabalhar:
for a in [...]; do [...]; done -
Para cada iteração, a variável
amanterá o nome de um arquivo correspondente ao padrão de globbing/path/to/directory/*txt. -
Quando soubermos com que arquivo estamos trabalhando, vamos
doalgo com ele, neste caso, um comandosed:sed -i '1,3{s/tag1/tagOne/g;}' -
O sinal
-isignificain place, portanto, o comandosednão precisará gravar arquivos temporários. Em seguida,1,3define o intervalo de linhas em que o comandosedirá operar. As chaves são o operador de agrupamento, que significa "da linha 1 a 3, execute o comando interno". Esse comando és: replace. O comando replace aceita uma expressão regular para correspondência e uma sequência para substituir essa correspondência por, neste caso, você deseja substituirtag1portagOne. O comando termina com o modificadorg, que significaglobal.
Em inglês, todo o comando diz:
For every file in the designated directory, whose name ends with txt, replace in it, but only in the lines one to three, all the occurrences of tag1 with tagOne.