如何仅使用以下行打印字符串figure
:
\begin{figure}[h!]
我试过了:
firstLine='\begin{figure}[h!]'
echo $firstLine | sed -n 's/\\begin{\(.*\)}/\1/p'
但返回:
figure[h!]
代替figure
问题似乎来自[]
或!
字符......
感谢您的帮助
答案 0 :(得分:0)
firstLine='\begin{figure}[h!]'
echo "$firstLine" | sed 's/.*{\(.*\)}.*/\1/'
输出:
figure
使用您的代码(添加.*
):
echo $firstLine | sed -n 's/\\begin{\(.*\)}.*/\1/p'
答案 1 :(得分:0)
这可能适合你(GNU sed):
sed 's/.*{\(.*\)}.*/\1/' file
这假设只有一个{...}
表达式和一行。
更严格的解决方案是:
sed -n 's/.*\\begin{\([^}]*\)}.*/\1/p' file
但是,如果未找到匹配项,则不会输出任何内容。