我想搜索两个连续的*字符并保存它们之间的所有内容,包括第一行*。 例: 输入:
A*1
A
B
B*4
C
Y*5
D
输出1:
A*1
A
B
输出2:
B*4
C
输出3:
Y*5
D
答案 0 :(得分:2)
您可以使用:
awk '/\*/ { n++; } { print >> "output" n }' inputfile
这会将三个文件output1
,output2
和output3
写入问题中的内容。包含*
的行之前的任何文字都会进入output
。
答案 1 :(得分:1)
awk 'BEGIN { RS="your delimiter"} {print $0}'
RS是记录分隔符,在开头定义它可以让你根据需要分割输入。
使用NR打印当前记录编号
awk 'BEGIN { RS="\""} {print "output " NR ":\n" $0}'
答案 2 :(得分:0)
这可能对您有用:
csplit -zf 'output' file '/\*/' '{*}'
这会将文件拆分为*
(/\*/
),并将结果文件outputnn
命名为nn
从00开始。空行的文件是不输出,过程重复到文件末尾({*}
)。