我正在尝试根据模式将文件拆分成碎片。以下代码:
awk "/<MY PATTERN>/{++i;}{print }" %FILE% > Temp.txt
给我一个输出:
1
1
1
1
1
1
2
2
2
2
3
3
4
4
4
4
5
5
5
我想用“1”打印输出中指示的所有行 - 问题是输出只打印“1”而不是数据行。
我知道我只是在代码的打印部分遗漏了一些东西,比如“在输出中打印产生”1“的行。”
我正在使用Windows批处理脚本。
答案 0 :(得分:1)
您的示例输出或命令都有问题.....
i
?它完全没用过。印刷品是print i
吗?/patter/
检查也没有意义。如果模式匹配,请执行++i
,然后打印整行?如果您得到的输出与您显示的输出(使用当前的cmd)一样,输出与您的输入完全相同。
如果print
行为print i
,您可以尝试:
awk '/pattern/{++i} i==1{print}' file >newfile
再次,它不是“分裂”,而是提取。它提取第一个(包含)和第二个(不包含)匹配行之间的所有行。
答案 1 :(得分:0)
使用print
if (i==1) print $0