0

特定の属性を含むldifファイルのユーザーを取得しようとしています。

入力ファイルは次のようになります。

# entry-id: 2
dn: uid=xxx,ou=xx,cn=xx,o=xx,c=xx,o=xx
uid: xxx
cn: Paul
SUKsoft: Windows
SUKsoft: Linux
...
# entry-id: 3
dn: uid=yyy,ou=yy,cn=yy,o=yy,c=yy,o=yy
uid: yy
cn: Jones
SUKsoft: Windows
...

# entry-id: 3
dn: uid=zzz,ou=zz,cn=zz,o=zz,c=zz,o=zz
uid: zz
cn: John
SUKsoft: Linux
...
# entry-id: 4
dn: uid=www,ou=ww,cn=ww,o=ww,c=ww,o=ww
uid: ww
cn: John2

...
# entry-id: 5
dn: uid=mmm,ou=mm,cn=mm,o=mm,c=mm,o=mm
uid: mm
cn: John3
SUKsoft: Linux
...

結果ファイルは、SUKsoft: Windows 属性を持つユーザーをフィルタリングする必要があります。

uid|cn
xx|Paul
yy|Jones

私はLinuxシェルbashの経験があまりありません。最初にファイルを繰り返し読み取ってsuksoftとuid属性を取得し、再度再処理して、最終的なファイルを作成し、以下のSUKsoftでuidだけを取得しようとしています:

cat 1.txt | while read line
do
   egrep -w  '^uid|SUKsoft' $line > output.txt
done

出力は次のようになります。

uid: xxx
SUKsoft: Windows
SUKsoft: Linux
uid: yy
SUKsoft: Windows
uid: zz
SUKsoft: Linux
uid: ww
uid: mm
SUKsoft: Linux

ここで、ファイルを処理して UID 行を取得したいと思います。SUKsoft: Windows が 1 つあり、それらを最終ファイルにコピーします。

ここで私を助けてくれませんか?

ありがとう

よろしく

4

1 に答える 1