0

全てにおいて良い日、

この機会に、同じパターン間でテキスト ブロックを抽出し、各ブロックを別のファイルに保存できる bash コードを見つけようとしています。

私の最初のアプローチは次のとおりです。

sed -n "/PATTERN/,/PATTERN/p" file.log

{...そして、はい、ログ ファイルでは、各ブロックを区切るパターンは同じです}

しかし、すべてのブロックを 1 つのストリームにしか出力しません...各ブロックをファイルに保存したいと思います。しかし、各ブロックで停止して保存し、次のブロックに進む方法がわかりません。

助けてくれてありがとう。

`
パターン

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

PATTERN

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

PATTERN

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

`

4

2 に答える 2

2

このコードは、 がブロックの番号であるresultNUMという名前のファイルを作成する必要がありますNUM

awk '/PATTERN/{close("result"f);f++}{print $0 > "result"f}' file.log
于 2013-08-23T02:53:37.357 に答える
0

これはあなたのために働くかもしれません:

csplit -z file '/PATTERN/' '{*}'
于 2013-08-23T21:46:28.470 に答える