重复从一行中提取组名?

时间:2017-07-28 09:52:52

标签: linux awk sed text-processing

我从下面的命令得到了输出。需要提取组名。

dsAttrTypeNative:memberOf: CN=Grupa_test,OU=Groups,DC=yellow,DC=com CN=Firefox_Install,OU=Groups,DC=yellow,DC=com CN=Network_Admin,OU=Groups,DC=yellow,DC=com

所以我希望有类似的东西:

Grupa_test
Firefox_Install
Network_Admin

每次的团体数量会有所不同,所以我不知道如何实现这一目标。

4 个答案:

答案 0 :(得分:2)

$ awk -v RS=' ' -F'[=,]' 'NR>1{print $2}' file
Grupa_test
Firefox_Install
Network_Admin

以上内容适用于任何awk。

答案 1 :(得分:0)

你可以用GNU grep:

来做
grep -oP '(?<=CN=)[^,]*' file

答案 2 :(得分:0)

尝试跟随awk一次。

awk -v RS='[ ,]' -v FS="=" '/CN=/{print $2}'  Input_file

答案 3 :(得分:0)

$ awk -v FPAT="CN=[^,]+" '{for(i=1;i<=NF;i++)print substr($i,4)}' Input_file

将每个匹配的CN=[^,]+个案视为一个字段。对于每个匹配的字段,请使用substr($i,4)过滤掉CN=,以打印所需的字符串。