【发布时间】:2023-04-10 20:57:01
【问题描述】:
我有以下文本数据(高度简化):
dn: cn=config
objectClass: olcGlobal
cn: config
some: properties
dn: cn={0}kerberos,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: {0}kerberos
some: properties
some: junk
some: more junk
dn: olcDatabase={-1}frontend,cn=config
objectClass: olcDatabaseConfig
some: properties
想要的输出是:
dn: cn=kerberos,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: kerberos
some: properties
我编写了以下shell管道来实现这一点:
awk -vRS= -vFS="\n" '/kerberos/{print $0}' /tmp/input.txt | \
sed 's/{0}kerberos/kerberos/' | \
sed '/some: junk/,$d'
这很好用,但我觉得混合 awk 和 sed 是在“作弊”。如何使用单个 awk 脚本实现这一点?
【问题讨论】: