AWK按每50个MATCH字符串分割文件的技术问询
解决方案
直接用这个AWK命令就能实现每50个MATCH分割一次文件:
awk ' BEGIN { group=1; count=0 } /MATCH/ { count++ if (count > 50) { group++ count=1 } next } { print > group ".txt" } ' file
命令解释
- BEGIN块:初始化两个变量,
group表示当前的文件分组编号(从1开始),count用来统计当前分组内MATCH的出现次数。 - 匹配
MATCH行时:先给计数器count加1,当计数超过50时,就把分组号group加1,同时把计数器重置为1,然后跳过当前行(和你原命令的next逻辑一致)。 - 其他行:直接写入当前分组对应的文件(比如
1.txt、2.txt等)。
你之前的命令问题
你写的flag++ == 50只是做了一次比较操作,没有对flag进行任何有效的赋值或逻辑分支处理,所以根本不会改变flag的数值,自然达不到每50个MATCH切换文件的效果。
内容的提问来源于stack exchange,提问作者user19619903
相关产品推荐
相关产品推荐

