sed-使用特殊字符在字符串上打印图案

sed-使用特殊字符在字符串上打印图案,sed,Sed,如何使用以下行仅打印字符串图: \begin{figure}[h!] 我试过: firstLine='\begin{figure}[h!]' echo $firstLine | sed -n 's/\\begin{\(.*\)}/\1/p' 但返回: figure[h!]而不是figure 问题似乎来自[]或字符 谢谢你的帮助 firstLine='\begin{figure}[h!]' echo "$firstLine" | sed 's/.*{\(.*\)}.*/\1/' 输出: fi

如何使用以下行仅打印字符串

\begin{figure}[h!]
我试过:

firstLine='\begin{figure}[h!]'
echo $firstLine | sed -n 's/\\begin{\(.*\)}/\1/p'
但返回:

figure[h!]
而不是
figure

问题似乎来自
[]
字符

谢谢你的帮助

firstLine='\begin{figure}[h!]'
echo "$firstLine" | sed 's/.*{\(.*\)}.*/\1/'
输出:

figure 这可能适用于您(GNU-sed):

这假设只有一个
{…}
表达式和一行

更严格的解决办法是:

sed -n 's/.*\\begin{\([^}]*\)}.*/\1/p' file
但是,如果找不到匹配项,则不会输出任何内容。

谢谢,我认为(.*)是\1/p打印的图案,但它也包括结束行的其余部分
sed 's/.*{\(.*\)}.*/\1/' file
sed -n 's/.*\\begin{\([^}]*\)}.*/\1/p' file