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

Bash 在文本文件中查找一行并将其替换为现有文本文件的内容,bash,latex,sed,grep,Bash,Latex,Sed,Grep,我有一个latex项目,我想使用pandoc将其构建到epub文件中。我正在使用\input{FILE}命令将章节保存在单独的latex文件中。不幸的是,pandoc不理解\input命令,因此我的章节从未插入 我需要运行一个脚本或其他程序来处理main.tex文件,以找到类似的行 \input{ch1.tex} \input{ch2.tex} ... 在每一行,将其替换为该文件的内容,然后删除原始的\input命令,然后将结果输入到临时文件中,或将结果直接传输到要生成的pandoc命令 该项

我有一个latex项目,我想使用pandoc将其构建到epub文件中。我正在使用\input{FILE}命令将章节保存在单独的latex文件中。不幸的是,pandoc不理解\input命令,因此我的章节从未插入

我需要运行一个脚本或其他程序来处理main.tex文件,以找到类似的行

\input{ch1.tex}
\input{ch2.tex}
...
在每一行,将其替换为该文件的内容,然后删除原始的\input命令,然后将结果输入到临时文件中,或将结果直接传输到要生成的pandoc命令

该项目分别在WinXP和Debian上使用MikTex和TexLive构建。最好是在Linux上工作的解决方案

使用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
$cat file1.txt
福
酒吧
qwe\input{file2.txt}asd\input{file3.txt}zxc
巴兹
$cat file2.txt
库克斯
库克斯
库克斯
$cat file3.txt
xyzzy
XYZZY
$使用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
$cat file1.txt
福
酒吧
qwe\input{file2.txt}asd\input{file3.txt}zxc
巴兹
$cat file2.txt
库克斯
库克斯
库克斯
$cat file3.txt
xyzzy
XYZZY
$如果您有呆呆的行为:

gawk '
    match($0, /\\input\{([^\}]+)/, a) {
        system("cat " a[1])
        next
    }
    {print}
'
如果您有呆呆的行为:

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

我得到一个错误:没有足够的参数在-e第1行打开,接近“打开”,我得到一个错误:没有足够的参数在-e第1行打开,接近“打开,”