我有一个包含多个乳胶方程式的文件,如下所示:
...
\begin{equation}
\beq{x}=x^{1}\beq{e_{1}}+x^{2}\beq{e_{2}}+x^{3}\beq{e_{3}}
\end{equation}
...
\begin{equation}
\beq{y}=y^{1}\beq{e_{1}}+y^{2}\beq{e_{2}}+y^{3}\beq{e_{3}}
\end{equation}
...
我想在" \end{equation}
"之前插入字符串" \tag{number}
"我可以成功获得number
变量。
要将此字符串插入" $(($line)-1)
"标识的行,我会:
gsed -i "$(($line)-1)i \tag{$number}" file
但我只得到:
...
\begin{equation}
\beq{x}=x^{1}\beq{e_{1}}+x^{2}\beq{e_{2}}+x^{3}\beq{e_{3}}
tag{1}
\end{equation}
...
\begin{equation}
\beq{y}=y^{1}\beq{e_{1}}+y^{2}\beq{e_{2}}+y^{3}\beq{e_{3}}
tag{2}
\end{equation}
...
正如您所看到的,我无法在" \ tag"的开头打印反斜杠字符。串
我尝试过:
gsed -i "$(($line)-1)i '\'tag{$number}" file
或
gsed -i "$(($line)-1)i \\tag{$number}" file
但没有好结果,
如果有人能看出错误的原因......
由于
PS:我在使用MacOS X,这就是我使用gsed
答案 0 :(得分:1)
你需要五个斜杠:
gsed -i "$(($line)-1)i \\\\\tag{$number}" file
让我先解释一下引用的命令:
gsed -i '1i \\\test'
在这种情况下你需要三个斜杠:
第一个命令用i
命令分隔要插入的文本,第二个命令用于转义斜杠本身,否则它会扩展为\t
。第三个,现在是转义的斜杠,将在新行的开头插入文字\
。
如果我们另外使用双引号括起命令,
gsed -i "1i\\\\\test"
该字符串将获得shell解析的主题。因此,单引号命令中的两个转义斜杠都需要进行转义。这有5个斜杠。
到目前为止一切顺利。但是,由于您要将shell变量插入到命令中,因此您需要确保其中的斜杠也会被转义。