1

我在使用模式拆分文件时遇到问题。

我的大文件是一个看起来像这样的文本文件

PATTERN
data
data
data PATTERN

当 PATTERN 位于行尾时,问题就开始了, csplit 将整行放入下一个文件中:

data_belonging_to_the_above_file PATTERN
data
data

我需要将data_belonging_to_the_above_file其放在上一个文件中

这是我现在使用的命令:

csplit data.log /PATTERN/ {*}
4

1 回答 1

1

与之前的评论类似,我的解决方案是使用替换来预处理您的文件。我试过这个:

perl -pe 's/(?<!^)(PATTERN)/\n\1/mg;s/(PATTERN)(?!$)/\1\n/mg'

如果它不在行首,则在模式之前添加一个换行符,如果它不在行尾,则在模式之后添加一个换行符。我使用 perl 因为不是每个版本的 sed 都支持这个表达式。

于 2012-08-06T09:08:58.563 回答