input.txt
ファイルに次のような複数の文字列が含まれているとします。
[[foo>a|a]]
[[foo>b|b]]
[[foo>c|c]]
私は次のように変更したい:
:foo:`a`
:foo:`b`
:foo:`c`
私はsed
この結果を使用または達成できると思いますrg
(私はそれを使用したことがありませんawk
)。
ただし、ファイルには次のような他の文字列も含まれています。
[[foo>a|d]]
[[foo>b|e]]
[[foo>c|f]]
私は次のように変更したい:
:foo:`d <a>`
:foo:`e <b> `
:foo:`f <c>`
2つの異なるモードを同時に処理する方法がわからないため、すべての試みは失敗しました。
後者の結果(そして前者の結果)を得るためのいくつかの方法を知っていますか?
ベストアンサー1
標準sed
構文を使用してください。
sed '
s/^\[\[\(.*\)>\(.*\)|\2\]\]$/:\1:`\2`/; t
s/^\[\[\(.*\)>\(.*\)|\(.*\)\]\]$/:\1:`\3 <\2>`/'