sedを使用してfindのファイルストリームからテキストをブロックする方法

sedを使用してfindのファイルストリームからテキストをブロックする方法

多くのファイルを含むディレクトリがあります*.org。整理されたすべてのファイルからテキストを選択したいと思います。* Learnings内容にタイトルがあります。* Learningsファイルの先頭から最後まで選択したいと思います。

私の現在の試みは

find ~/org/journal -name "*.org" -type f | xargs sed -n -e '/\*\ Learnings/,$p'

ただし、これはリンクされたストリームのみを出力します。

* Learnings予想される出力は、クエリから返された各ファイルのヘッダーの後に続くコンテンツストリームです。

また、ソリューション確かに使用すべきsed

ベストアンサー1

GNU実装では、akaオプションを使用して各ファイルを個別に処理sedできます。-s--separate

find . -name '*.org' -type f -exec sed -s '/\* Learnings/,$!d' {} +

そしてawk

find . -name '*.org' -type f -exec awk '
  FNR == 1 {found = 0}; /\* Learnings/ {found = 1}; found' {} +

おすすめ記事