regex在sed的下一个新行之前打印所有行

问题描述 投票:0回答:2

我具有以下文件内容:

# example, Group, example.com
 dn: cn=example,ou=Group,dc=example,dc=com
 cn: example
 gidNumber: 2344
 objectClass: posixGroup
 objectClass: top
 memberUid: michael.george
 memberUid: dan.bworn
 memberUid: msmith
 memberUid: d.bob

# example-dev, Group, example.com
 dn: cn=example-dev,ou=Group,dc=example,dc=com
 cn: example-dev
 gidNumber: 2345
 objectClass: posixGroup
 objectClass: top
 memberUid: alexandra.shedy
 memberUid: alex.mansi
 memberUid: bclara
 memberUid: hwan.nex

我想在下一个新行上打印第一个块,所以应该是:

# example, Group, example.com
 dn: cn=example,ou=Group,dc=example,dc=com
 cn: example
 gidNumber: 2344
 objectClass: posixGroup
 objectClass: top
 memberUid: michael.george
 memberUid: dan.bworn
 memberUid: msmith
 memberUid: d.bob

我已经尝试过cat for_stack.txt | sed -n '/# example/,/^$/p',但由于# example# example-dev字符串相似,所以它也获得了第一个和第二个块。

尝试使用正则表达式^$符号:cat for_stack.txt | sed -n '/^# example$/,/^$/p',但不返回任何内容。好像使用正则表达式的技巧将无法正常工作。有什么主意吗?

regex awk sed text-processing
2个回答
0
投票

您能不能尝试以下操作(仅针对显示的示例进行编写和测试)。>>

awk '/^# example/{count1++} /dn:/{count++};count<=1 && NF && count1<2' Input_file

0
投票

以段落模式运行awk并打印第一条记录

© www.soinside.com 2019 - 2024. All rights reserved.