这是我想要的工作:
我在配置文件中有以下行
subscribed_pages[]=WikiPage.ChildPage.*
我想走一堆文件并替换以subscribed_pages[]=
开头的那一行,无论该行的其余部分是什么,我都希望它看起来像。
subscribed_pages[]=*
我试图用一个文件执行此操作并收到以下错误。
sed 's/subscribed_pages[]=.*/subscribed_pages[]=\*/' -i 1288079906.93.57631
sed: -e expression #1, char 46: unterminated `s' command
答案 0 :(得分:6)
您需要在搜索模式中将[
和]
转换为\[
和\]
。
$ echo 'subscribed_pages[]=WikiPage.ChildPage.*' \
| sed -e 's/subscribed_pages\[\]=.*/subscribed_pages[]=\*/'
subscribed_pages[]=*
答案 1 :(得分:2)
除了转义括号外,您还可以避免在替换部分中再次输入匹配项:
sed -r 's/(subscribed_pages\[\]=).*/\1\*/'
\ 1到\ 9引用第n个带括号的字符串(正则表达式中的“组”)