我有一行,如下所示,我正在尝试使用grep命令提取与给定模式匹配的字符串。但是它没有按预期工作。
# file: /test/test1 # owner: own # group: grp user::rwx user:nr:rwx user:ac:rwx user:ao:rwx group::r-x group:accounts:--x group:fin:r-x mask::rwx other::--- default:user::rwx default:group::r-x default:group:accounts:--x default:group:fin:rwx default:mask::rwx default:other::---
要搜索的模式
default:group:.*
使用命令
echo "# file: /test/test1 # owner: own # group: grp user::rwx user:nr:rwx user:ac:rwx user:ao:rwx group::r-x group:accounts:--x group:fin:r-x mask::rwx other::--- default:user::rwx default:group::r-x default:group:accounts:--x default:group:fin:rwx default:mask::rwx default:other::---" | grep -o "default:group:.*" | grep -o "rwx"
预期输出
default:group:fin:rwx
实际结果
default:group:accounts:--x default:group:fin:rwx default:mask::rwx default:other::---
答案 0 :(得分:0)
default:group:.*
不够精确,因为有多个匹配项:
$ echo "# file: /test/test1 # owner: own # group: grp user::rwx user:nr:rwx user:ac:rwx user:ao:rwx group::r-x group:accounts:--x group:fin:r-x mask::rwx other::--- default:user::rwx default:group::r-x default:group:accounts:--x default:group:fin:rwx default:mask::rwx default:other::---"|
grep -o "default:group:[^ ]*"
输出
default:group::r-x
default:group:accounts:--x
default:group:fin:rwx
您需要
$ echo ... | grep -o "default:group:fin:[^ ]*"
或选择第三场比赛。
更新:在注释中刚刚注意到以default:group
开头,以rwx
结尾:
$ echo ... | grep -o "default:group:[^ ]*rwx "