将模式之间的行重定向到单独的文件

将模式之间的行重定向到单独的文件

需要从输入文件中分离出两个重复模式之间的行,并将每个选择的行重定向到单独的文件。

输入文件格式示例:
Pattern 1
Line1
Line2
Line3
Pattern 2
Pattern 1
Line4
Line5
Pattern 2

输出文件:
文件 1:
Pattern 1
Line1
Line2
Line3
Pattern 2

文件2:
Pattern 1
Line4
Line5
Pattern 2

这如何作为 shell 脚本的一部分来完成?我有以下 awk 命令实现,但它将完整输出仅重定向到一个文件:
awk '/Pattern\ 1/,/Pattern\ 2/{print > "filename_$var.txt";var=var+1}var' $filename

答案1

你可以试试这个:

awk '{if ($0 ~ /Pattern 1/) a++} {print >> "file"a}' file

首先awk是查看第一列是否以所需的模式开始。

如果是这样,则未引入的变量a将增加到a=1

第二个 awk 附加以下所有内容模式1模式2到复合字符串fileA作为一个文件。

我希望这有帮助。

相关内容