Batch file 使用awk将文件拆分为多个部分

Batch file 使用awk将文件拆分为多个部分,batch-file,printing,awk,split,Batch File,Printing,Awk,Split,我正试图根据一个模式将一个文件拆分为多个部分。以下代码: awk "/<MY PATTERN>/{++i;}{print }" %FILE% > Temp.txt 我想用“1”打印输出中指示的所有行——问题是输出只打印“1”而不是数据行 我知道我只是在代码的打印部分遗漏了一些东西,比如“打印输出中生成“1”的行” 我正在使用windows批处理脚本。如果(I==1)打印$0,则使用更改打印示例输出或命令出现问题 你为什么需要i?它根本不被使用。打印是否为print i /p

我正试图根据一个模式将一个文件拆分为多个部分。以下代码:

awk "/<MY PATTERN>/{++i;}{print }" %FILE% > Temp.txt
我想用“1”打印输出中指示的所有行——问题是输出只打印“1”而不是数据行

我知道我只是在代码的打印部分遗漏了一些东西,比如“打印输出中生成“1”的行”


我正在使用windows批处理脚本。

如果(I==1)打印$0,则使用
更改
打印

示例输出或命令出现问题

  • 你为什么需要
    i
    ?它根本不被使用。打印是否为
    print i
  • /patter/
    检查也没有意义。如果模式匹配,是否仍要打印整行
  • 问题的标题是关于“将文件分割成碎片”,我看不出在您的代码中发生过这种情况
如果您得到的输出与您向我们展示的一样(使用当前cmd),那么输出与您的输入完全相同

如果
print
行是
print i
,您可以尝试:

awk '/pattern/{++i} i==1{print}' file >newfile

同样,这不是“分裂”,而是提取。它提取第一(包含)和第二(独占)匹配行之间的所有行。

请添加示例输出。你的解释很让人困惑。我为这个有点不准确的术语道歉——我对批处理脚本编码还是相当陌生的。我知道我很接近,但你上面的解决方案非常有效。我基本上是在源文件中循环,提取其中的片段,然后在片段中循环以收集数据元素。我相信这看起来很简单,但你用这个救了我的理智。非常感谢!
awk '/pattern/{++i} i==1{print}' file >newfile