如何解决如何使用bash脚本或awk或grep从Linux的getfacl创建的文本文件中提取用户列表
我使用getfacl从目录/文件中提取了ACL列表并将其保存到文件(即ACL.txt)中,我们只需要从ACL中仅提取特定用户ID(即user1):>
# file: folder1
# owner: user1
# group: usergroup1
user::rwx
group::r-x
group:usergroup1:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:usergroup1:rwx
default:mask::rwx
default:other::r-x
# file: folder1/subfolder1
# owner: user2
# group: usergroup2
user::rwx
group::r-x
group:usergroup2:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:usergroup2:rwx
default:mask::rwx
default:other::r-x
# file: folder1/subfolder2
# owner: user3
# group: usergroup3
user::rwx
group::r-x
group:usergroup2:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:usergroup2:rwx
default:mask::rwx
default:other::r-x
# file: folder2/subfolder2
# owner: user1
# group: usergroup1
user::rw-
group::r-x
group:usergroup1:rwx
mask::rwx
other::r--
我需要一个bash脚本来提取特定用户/组并将其写入新文件,如下所示(搜索user1group1):
# file: folder1
# owner: user1
# group: usergroup1
group:usergroup1:rwx
default:group:usergroup1:rwx
# file: folder2/subfolder2
# owner: user1
# group: usergroup1
group:usergroup1:rwx
有人可以帮忙吗?谢谢。
解决方法
您可以使用awk
来过滤行。它带有两个(可选)参数U和G,它们指示应提取的用户和组:
awk -F: -vOFS=: -v U=user1 -v G=usergroup1 '
# Copy empty/comment lines
!$0 || /#.*/ { print ; next }
$1 == "user" && $2 && $2 == U { print ; next }
$1 == "group" && $2 && $2 == G { print ; next }
$1 == "default" && $2 == "user" && $3 && $3 == U { print ; next }
$1 == "default" && $2 == "group" && $3 && $3 == G { print ; next }
' < acl.txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。