我有一段文字,我想要删除。
\caption[Server HTTP responses]{Server HTTP responses\label{fig:http-status}}
我希望sed碰到最终},以便它像标签一样在标签前面开始:
\caption[Server HTTP responses]{Server HTTP responses}\label{fig:http-status}
对我的测试文本使用正则表达式编辑器,似乎:
(\\label\{fig:[a-zA-z0-9 -]{1,}\})\}$
替换为
\}\1
会做到这一点。这适用于debuggex.com和Mozilla正则表达式测试程序。
然而,当我用sed测试时(我是一个完整的新手用sed,所以请在这里轻松一下),我用
cat ./file.tex | sed -e 's@(\\label\{fig\:[a-zA-z0-9 -]{1,}\})\}$@\}\1@g' > test_output.txt
返回:
sed: -e expression #1, char 47: Invalid content of \{\}
我在这里做错了什么?是否有更简单的方法来运行大量文本文件来替换正则表达式?
答案 0 :(得分:2)
你有一些问题:
A-z
不正确。/g
标志不需要替换一次。得到:
sed -e 's@\(\\label{fig:[a-zA-Z0-9 -]\{1,\}}\)}$@}\1@' ./file.tex
产量:
\caption[Server HTTP responses]{Server HTTP responses}\label{fig:http-status}