我有一个ldif文件,我正在检索一条匹配的行,加上后面的行,直到我到达一个空白行。这很好。
$ awk '/dn:\ cn=test/,/pattern|^$/' $file
dn: cn=test,cn=Users,dc=test,dc=com
cn: John
sn: Smith
givenname: Test
mail: test@test.com
userpassword: password
uid: test
defaultgroup: cn=test,cn=test01,cn=groups,dc=test,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgperson
objectclass: user
objectclass: user2
我想知道的是,如何从文件中删除这些行?
答案 0 :(得分:0)
要从输入文件中删除这些行,您可以使用!
取消范围,因此只打印其他行:
awk '!(/dn:\ cn=test/,/pattern|^$/)' "$file" > tmp && mv tmp "$file"
输出被重定向到临时文件,然后覆盖原始文件。