私はmkdocsインスタンスを持ち、ページの内部リンクを印刷するスクリプトを書いています。 1行に複数の一致がある場合、grepは一致のみを印刷できません。
これが私が現在持っているものです:
$ grep -Eon '\[([[:alpha:]]|[[:digit:]]|[[:space:]])*\]\((\/|\.).*\)' /path/to/file.md
10:[foo](../../relative_path/foobar.md) is the path to another file, also see [bar](/absolute/path/foobar.md)
出力が次のようになります。
10:[foo](../../relative_path/foobar.md)
10:[bar](/absolute/path/foobar.md)
grepやawk、sedなどの他のコマンドでこれを行う方法はありますか?
ベストアンサー1
grep -Pno "[[[:alnum:]]*]\(.*?\)" /path/to/file.md
それとももっと良いかもしれません(これは一致するかもしれません)。["foo別の単語"])
grep -Pno "\[([[:alnum:]]*[[:space:]]*)*?\]\(.*?\)"
-P
=>貪欲ではないマッチングのためのPerl Regex?
または、欲しくない英数字とスペースのみが可能ですが、すべての文字方法
grep -Pno "\[.*?\]\(.*?\)"