2
我有以下的文本數據(高度簡化):簡化文本處理管線與AWK
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腳本來實現這一點?
@dwurf:感謝 - 不知道那裏發生了什麼...... –
您腳本對我的示例輸入工作良好 - 真正的數據集(在[這些說明](https://help.ubuntu.com/12.04/serverguide/kerberos-ldap.html#kerberos-ldap-openldap)中遇到)需要略微更嚴格的比賽條件。感謝真棒帖子,正是我正在尋找:) – dwurf
這假設在'一些:'你有'垃圾'後。我認爲OP意味着其他數據要刪除。所以在這裏,我會去'awk'而不是'sed' – Jotne