grep、sed、またはawkを使用してファイルから行を抽出しますか?


-1

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を含む行の間の空白行ORの間のすべての行を抽出します。

組み込みのBASHコマンド、grep、awk、sedなどだけを使いたいのですが。

Python、PHP、Perlなどはありません


必要な属性のみの出力を直接ldiffファイルに取り込まないのはなぜですか。
Zumo de Vidrio

何百というLDAPクエリを実行して実行する必要があるからです。
Peter

Perlじゃない? Pythonじゃない?追加のLDAPクエリはありませんか。意図的に難しい方法を選択することで何が起こりますか?...
grawity

1
その点に注意してください superuser.com 無料のスクリプト/コードライティングサービスではありません。あなたが今までに試したこと(すでに使っているスクリプトやコードを含む)と行き詰まった場所を教えていただければ、私たちは特定の問題を解決することを試みることができます。また読むべき 良い質問をするにはどうすればいいですか。
DavidPostill

1
デビッド、私はあなたのコメントのポイントを本当に見ません。私は誰かに私の脚本を書くように頼んでいません、ありがとう。特定のコマンドの使い方を聞いています。とにかく、私は自分にできることがわかったので、自分の質問に答えます。
Peter

回答:


2

さて、私はsedを使う簡単な方法を見つけました:

sed -n '/start_search/,/end_search/p' filename)
  • start_searchは最初の行のパターンです
  • end_searchは最後の行のパターンです。

私の場合、start_searchは 'dn:cn ='です。 end_searchは '^ cn:'または '^ $'です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.