次のようなコメントを変換するにはどうすればよいですか
{{{
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
テキストにオブジェクトがないと仮定すると、以下\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'
コードセクションの前後に余分な行を追加したことに注意してください。そうしないと、マークダウンがコードを正しく認識しません。
sed -i~ '/^{{{/,/^}}}/{/^{{{\|}}}/d;s;\(^.*$\); \1;}' inFile
これはうまくいくかもしれません(GNU sed):
sed '/^{{{/,/^}}}/{//d;s/^/ /}' file