7

以下のようなエントリを持つファイルが Linux にあります。

dn: CN=HP_NetworkSupport,OU=groups,DC=HDFCSLDM,DC=COM
dn: CN=Review users,OU=groups,DC=HDFCSLDM,DC=COM

たとえば、最初の まで CN 情報のみを抽出したいと思います。

> HP_NetworkSupport
> Review users

上記の場合、別のファイルに。

同じことをするためのコマンドは何でしょうか。

4

5 に答える 5

5

使用するawk

awk -F"=|," '{print $2}' file
HP_NetworkSupport
Review users

また

awk -F[=,] '{print $2}' file
HP_NetworkSupport
Review users

区切り文字を,または=に設定してから、2 番目のフィールドを出力します。


カンマを含むフィールドを処理するには、LDAP のパーサーを使用する必要がありますが、これは機能するはずです。

echo file
dn: CN=HP_NetworkSupport,OU=groups,DC=HDFCSLDM,DC=COM
dn: CN="Review, users",OU=groups,DC=HDFCSLDM,DC=COM

awk -F"CN=|,OU" '{print $2}' file
HP_NetworkSupport
Review, users
于 2013-10-08T09:11:31.227 に答える
2

使用sed:

$ sed -r 's/.*CN=([^,]*),.*/\1/' inputfile
HP_NetworkSupport
Review users
于 2013-10-08T08:32:53.593 に答える
2
perl -lne 'print $1 if(/CN=([^\,]*),/)' your_file

以下でテスト:

> cat temp
dn: CN=HP_NetworkSupport,OU=groups,DC=HDFCSLDM,DC=COM
dn: CN=Review users,OU=groups,DC=HDFCSLDM,DC=COM
> perl -lne 'print $1 if(/CN=([^\,]*),/)' temp
HP_NetworkSupport
Review users
>
于 2013-10-08T09:16:18.300 に答える