在文本文件中查找一行并将其替换为现有文本文件的内容

时间:2011-07-29 21:03:56

标签: bash latex sed grep

我有一个乳胶项目,我想使用pandoc构建到epub文件中。我正在使用\ input {FILE}命令将章节保存在单独的latex文件中。不幸的是,pandoc不理解\ input命令,所以我的章节永远不会被插入。

我需要运行一个脚本或其他东西来处理我的main.tex文件以找到看起来像

的行
\input{ch1.tex}
\input{ch2.tex}
...

并在每一行中,将其替换为该文件的内容,然后删除原始\ input命令,然后将结果输入临时文件或将结果直接传递给要构建的pandoc命令。

这个项目分别在WinXP和Debian上使用MikTex和TexLive构建。适用于Linux的解决方案是首选。

2 个答案:

答案 0 :(得分:2)

如果你有傻瓜:

gawk '
    match($0, /\\input\{([^\}]+)/, a) {
        system("cat " a[1])
        next
    }
    {print}
'

答案 1 :(得分:1)

使用Perl:

$ cat file1.txt
foo
bar
qwe\input{file2.txt}asd\input{file3.txt}zxc
baz
$ cat file2.txt
qux
quux
quuux
$ cat file3.txt
xyzzy
xyzzzy

$ <file1.txt  perl -pe 's/\\input{([^}]*)}/open $1,"<$1";join("",<$1>)/ge'
foo
bar
qwequx
quux
quuux
asdxyzzy
xyzzzy
zxc
baz