【发布时间】:2017-06-11 09:00:49
【问题描述】:
我需要使用 shell 脚本根据大文件中最后一次出现的模式将大文件拆分成更小的块。例如。
Sample.txt(文件将根据要搜索的模式的第三个字段进行排序)
NORTH EAST|0004|00001|Fost|Weaather|<br/>
NORTH EAST|0004|00001|Fost|Weaather|<br/>
SOUTH|0003|00003|Haet|Summer|<br/>
SOUTH|0003|00003|Haet|Summer|<br/>
SOUTH|0003|00003|Haet|Summer|<br/>
EAST|0007|00016|uytr|kert|<br/>
EAST|0007|00016|uytr|kert|<br/>
WEST|0002|00112|WERT|fersg|<br/>
WEST|0002|00112|WERT|fersg|<br/>
SOUTHWEST|3456|01134|GDFSG|EWRER|<br/>
“Pattern 1 = 00003”要搜索的输出文件必须包含sample_00003.txt
NORTH EAST|0004|00001|Fost|Weaather|<br/>
NORTH EAST|0004|00001|Fost|Weaather|<br/>
SOUTH|0003|00003|Haet|Summer|<br/>
SOUTH|0003|00003|Haet|Summer|<br/>
SOUTH|0003|00003|Haet|Summer|<br/>
“Pattren 2 = 00112”要搜索的输出文件必须包含sample_00112.txt
EAST|0007|00016|uytr|kert|<br/>
EAST|0007|00016|uytr|kert|<br/>
WEST|0002|00112|WERT|fersg|<br/>
WEST|0002|00112|WERT|fersg|<br/>
二手
awk -F'|' -v 'pattern="00003"' '$3~pattern big_file' > smallfile
和 grep 命令,但由于文件大小为 300+ MB,因此非常耗时。
【问题讨论】:
-
“模式的最后一次出现”是什么意思?
-
最后一次在文件中匹配模式。即模式“00003”在其第三个字段中匹配到 sample.txt 文件的第 5 行。所以进程想要将它拆分到第 5 行到一个单独的文件中。
-
以后,请使用编辑框左上角的
{}格式化工具对高亮文本进行格式化为代码/数据/输出。祝你好运。