Bash 在文本文件中查找一行并将其替换为现有文本文件的内容
我有一个latex项目,我想使用pandoc将其构建到epub文件中。我正在使用\input{FILE}命令将章节保存在单独的latex文件中。不幸的是,pandoc不理解\input命令,因此我的章节从未插入 我需要运行一个脚本或其他程序来处理main.tex文件,以找到类似的行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命令 该项
\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行打开,接近“打开,”