正規表現を使用して、ファイル内の1つまたは2つの異なるパターンを置き換えます。

正規表現を使用して、ファイル内の1つまたは2つの異なるパターンを置き換えます。

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>`/'

おすすめ記事