需要从输入文件中分离出两个重复模式之间的行,并将每个选择的行重定向到单独的文件。
输入文件格式示例:
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到复合字符串file
A作为一个文件。
我希望这有帮助。