我在使用模式拆分文件时遇到了麻烦。
我的大文件是一个看起来像这样的文本
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/ {*}
答案 0 :(得分:1)
与之前的评论类似,我的解决方案是使用替代品预处理您的文件。 我试过这个:
perl -pe 's/(?<!^)(PATTERN)/\n\1/mg;s/(PATTERN)(?!$)/\1\n/mg'
如果模式不在行的开头,则在模式之前添加换行符,如果模式不在行的末尾,则在模式之后添加换行符。 我使用perl是因为不是每个版本的sed都支持这个表达式。