我有一个文件,每行有一个条目。每行的格式如下:

 "group:permissions:users"

权限和用户可以有多个由comas分隔的值,如下所示:
 "grp1:create,delete:yo,el,ella"

我要返回以下内容:
yo
el
ella

这就是我目前所拥有的:
cat file | grep grp1 -w | cut -f3 -d: | cut -d "," -f 2

这将返回yo,el.ella,如何使它每行返回一个值?

最佳答案

可以使用awk和-F选项将:用作字段分隔符:

[user@host]$ echo "grp1:create,delete:yo,el,ella" | awk -F ':' '{print $3}'
yo,el,ella

这将得到用户字符串,用逗号分隔。然后你就可以用那根绳子做任何你想做的事。如果要逐行打印每个用户,可以使用tr将逗号替换为换行符:
[user@host]$ echo "grp1:create,delete:yo,el,ella" | awk -F ':' '{print $3}' | tr ',' '\n'
yo
el
ella

关于bash - 在bash中解析一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/345518/

10-11 11:57