我具有以下文件内容:
# 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'
,但不返回任何内容。好像使用正则表达式的技巧将无法正常工作。有什么主意吗?
您能不能尝试以下操作(仅针对显示的示例进行编写和测试)。>>
awk '/^# example/{count1++} /dn:/{count++};count<=1 && NF && count1<2' Input_file
以段落模式运行awk并打印第一条记录