使用 grep、sed 或 awk 从文件中提取行?

使用 grep、sed 或 awk 从文件中提取行?

我想从 openLDAP 身份验证迁移到其他身份验证方法。我的主要问题是 sudoers,我需要手动迁移它们。

因此,我需要为此创建一个脚本。我想为此使用 bash。ldif 文件包含如下行:

dn: cn=Devs, ou=SUDOers, dc=example,dc=com
sudoUser: %devs
sudoCommand: /bin/su - command
sudoCommand: /bin/su - wwwadmin
sudoHost: ALL
description: Developer Admin
objectClass: sudoRole
cn: Devs

所以,我需要做的是:

  1. 读取 LDIF 文件。
  2. 提取 dn: 和空白行之间的所有行,或者包含 cn: Devs 的行之间的所有行

我只想使用嵌入式 BASH 命令、grep、awk、sed 等。

没有 Python、PHP、Perl 等。

答案1

好的,我找到了一种使用 sed 的简单方法:

sed -n '/start_search/,/end_search/p' filename)
  • start_search 是第一行的模式
  • end_search 是最后一行的模式。

在我的例子中,start_search 是 'dn: cn=',end_search 是 '^cn:' 或 '^$'

相关内容