使用 sed 将 TeX 宏添加到文件的开头(为什么我的方法不起作用?)

Fah*_*tha 4 sed text-processing

我需要在文件的开头添加一行。有问题的线路是

\def\submit{}
Run Code Online (Sandbox Code Playgroud)

我有一个使用sed. 我不知道sed,但它是从网上的某个地方得到的,但它工作得不太正确,因为它在行的开头插入了一个不需要的空格。虽然这并不重要,但我认为我最好这样做。

sed -i '1i\ \\\def\\\submit{}' 'dirname/filename'
Run Code Online (Sandbox Code Playgroud)

从我的阅读看来,所有这些额外的反斜杠都需要转义外壳。也欢迎使用其他解决方案,但如果可能的话,我想要一个相对紧凑的单内衬。谢谢。

这个问题,在 Linux 中通过终端在文件的开头插入文本与 sed类似,但不能帮助我调试我的表达式。

编辑:我接受了@Jonathan 的回答,因为它解释了我以前的方法有什么问题。但是,我还添加了一个答案。

Chr*_*own 5

sed用于编辑流——文件不是流。使用专门用于此目的的程序,例如edex。该-i选项sed不仅不便于携带,这也将打破任何符号链接到您的文件,因为它本质上其删除,并重新创建它,这是毫无意义的。

ed -s [file] << EOF
0a
\\def\\submit{}
.
w
EOF
Run Code Online (Sandbox Code Playgroud)