我怎样才能转换评论像
{{{
abc
def
}}}
降价评论,如
abc
def
(每行开头有 4 个空格)在 vim 或 sed 中?
我尝试了以下但我没有得到第一行之后的空格:
:%s/{{{\n\(\_.*\)\n}}}/ \1/
用 vim:
:g/{{{/,/}}}/le 4|d|/}}}/d
解释:
:g/{{{/
使用模式在每一行上运行一个命令{{{
,/}}}/le 4
从当前行到结尾左对齐}}}
d
删除当前行/}}}/d
搜索匹配的行}}}
并将其删除根据您的缩进设置,使用>
而不是le 4
可能是排序器。
如需更多帮助,请参阅
:h :g
:h range
:h :left
:h :d
使用awk:
awk '/{{{/{l=1;next}/}}}/{l=0} l{print" "$0}' file.txt
或不那么神秘:
awk '/{{{/{l=1;next} /}}}/{l=0} l==1{print " " $0}' file.txt
sed -i~ '/^{{{/,/^}}}/{/^{{{\|}}}/d;s;\(^.*$\); \1;}' inFile
假设您的文本中没有\r
对象,您可以在以下帮助下进行转换tr
:
tr '\n' '\r' \
| sed 's/{{{/\r{{{/;
s/}}}/}}}\r/;
:w;
s/\r{{{\r}}}//;
s/{{{\r\([^\r]*\)\r\(.*\)}}}/ \1\r{{{\r\2}}}/;
tw' \
| tr '\r' '\n'
请注意,我在代码部分之前和之后添加了额外的一行,否则 markdown 将无法正确识别代码。
这可能对您有用(GNU sed):
sed '/^{{{/,/^}}}/{//d;s/^/ /}' file