Inserir texto de múltiplas linhas em vários arquivos via linha de comando

3

Eu quero inserir algum código em vários tex files foo*.tex em um diretório, uma linha após \documentclass{.*} . Observe que os arquivos têm classes de documentos diferentes, portanto o .* é apenas um espaço reservado simbólico aqui.

O código tem várias linhas, por exemplo

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ngerman}

Qual é a melhor maneira de fazer isso automaticamente?

    
por student 01.05.2012 / 11:10

2 respostas

4

Uma maneira de usar GNU sed :

Conteúdo de script.sed :

/^\documentclass[^{]*{[^}]*}/ {
    a\
\usepackage[utf8]{inputenc}\
\usepackage[T1]{fontenc}\
\usepackage{ngerman}
}

Execute como:

sed -s -i.bak -f script.sed foo*.tex

Eu uso ^ para corresponder ao documentclass no início da linha. Remova-o se você puder ter espaços antes dele.

A opção -s considera cada entrada como um arquivo diferente e -i cria backups com extensão bak .

    
por 01.05.2012 / 11:31
2

o seguinte script de shell deve ser feito

#!/bin/sh
sed '
/\begin{document}/ a\
\usepackage[utf8]{inputenc}\
\usepackage[T1]{fontenc}\
\usepackage{ngerman}
' $1

simplesmente chame o script com seus arquivos como entrada (um por um)

    
por 01.05.2012 / 11:34