使用awk将文件拆分成碎片

时间:2013-12-16 23:29:47

标签: batch-file printing awk split

我正在尝试根据模式将文件拆分成碎片。以下代码:

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批处理脚本。

2 个答案:

答案 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