我需要去掉两个方括号,我只需要它们一次。但是,在执行此命令后出现以下错误:
sed -ri 's/("opening_hours": \[\[)(.*?)(\]\]/"opening_hours": \[\2\]/' ./foo.txt
字符串
错误:sed:-e表达式#1,char 60:不匹配(或(
input(foo.txt):
"opening_hours": [["Pendant les expositions : le jeudi de 12h \u00e0 20h et\u00a0du vendredi au dimanche, de 12h \u00e0 18h"]]
"opening_hours": [["\u00d6ffnungszeiten: Fr-Sa, 15-7 Uhr und nach Vereinbarung", "Open hours: Fri-Sat, 3-7pm and by appointment"]]
型
预期产出:
"opening_hours": ["Pendant les expositions : le jeudi de 12h \u00e0 20h et\u00a0du vendredi au dimanche, de 12h \u00e0 18h"]
"opening_hours": ["\u00d6ffnungszeiten: Fr-Sa, 15-7 Uhr und nach Vereinbarung", "Open hours: Fri-Sat, 3-7pm and by appointment"]
型
3条答案
按热度按时间nr7wwzry1#
为了更清楚,我建议使用两个
s
命令:字符串
ssgvzors2#
为了与您所示的样品匹配确切的括号,我建议使用以下。这里我使用了2个替换,但正则表达式是为了匹配更精确的括号。
字符串
1rhkuytd3#
这可能对你有用(GNU sed):
字符串
匹配
[
后跟零或非[
和]
后跟]
,并将其替换为[
和]
之间的值。注意:
[^][]
不匹配[
或]
。