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