获得两个角色之间的所有

时间:2014-10-15 21:37:33

标签: bash awk sed grep

我想搜索两个连续的*字符并保存它们之间的所有内容,包括第一行*。 例:  输入:

A*1
A
B
B*4
C
Y*5
D

输出1:

A*1
A
B

输出2:

B*4
C

输出3:

Y*5
D

3 个答案:

答案 0 :(得分:2)

您可以使用:

awk '/\*/ { n++; } { print >> "output" n }' inputfile

这会将三个文件output1output2output3写入问题中的内容。包含*的行之前的任何文字都会进入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开始。空行的文件是不输出,过程重复到文件末尾({*})。