gpt4 book ai didi

regex - 使用 sed 缩进行范围?

转载 作者:太空宇宙 更新时间:2023-11-04 09:34:08 25 4
gpt4 key购买 nike

我在这里尝试使用 sed 将旧式 phpBB 代码块转换为 MARKDOWN

请考虑以下数据示例:

cat sed.txt
[code]xxxx-YYY-xxxx[/code]
Some text
[code]yyyy-ZZZ-yyyy[/code]
More text
Bogus code block[/code]
[code]zzzz-XXX-zzzz[/code]

经过长时间的反复试验,我最终采用了以下策略:

sed -ne '
/\[code\].*\[\/code\]/ {
s#\[/*code\]##g
s#^#\n\n #
s#$#\n\n#p
}' sed.txt | cat -Av
$
$
xxxx-YYY-xxxx$
$
$
$
$
yyyy-ZZZ-yyyy$
$
$
$
$
zzzz-XXX-zzzz$
$
$

这很好用,但是我发现这样做会更容易并且看起来更自然:

sed -ne '
/\[code\].*\[\/code\]/ {
s#\[/*code\]#\n\n#g
s#^# #p
}' sed.txt | cat -Av
$
$
xxxx-YYY-xxxx$
$
$
$
$
yyyy-ZZZ-yyyy$
$
$
$
$
zzzz-XXX-zzzz$
$
$

但这并没有像预期的那样工作。任何建议为什么,如何解决这个问题?

谢谢

最佳答案

sed '/\[code\].*\[\/code\]/ {
s#\[code]#& #g
s#\[/*code\]#\
\
#g
}' sed.txt

替换顺序很重要,并且在您的两个样本之间发生了变化

我也改变了一点行为,-np 在这个文本示例中不需要(但如果来自最大的结构可能)(在我的 aix so posix 版本上测试)

关于regex - 使用 sed 缩进行范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28498994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com