使用grep和regex从etc / password获取特定用户列表

时间:2017-02-16 10:00:48

标签: regex bash grep

我想从bash中的/etc/passwd文件中获取特定用户ID。

给定的用户ID由6个字符组成,可以是6个整数,也可以是1个字母和5个整数(在第二种情况下,该字母始终是用户ID的第一个字符)。见下面的例子:

398329
y32839
392009
r39288

我正在寻找一个正则表达式模式,以便从我的/etc/passwd文件中获取仅包含与此格式匹配的用户ID的列表。这就是我到目前为止所做的:

users="$(cut -d: -f1 /etc/passwd | grep -o '[0-9]*')"

我可以使用数字获取用户ID,但由于我的正则表达式有限,所以我们将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:0)

您可以将public abstract class AnimalRepository<T extends IAnimal> { protected Class<T> clazz; public AnimalRepository(Class<T> clazz) { this.clazz = clazz; } public RealmResults<T> findAll(Realm realm) { return realm.where(clazz).findAll(); } } @Singleton public class GermanShepardRepository extends AnimalRepository<GermanShepard> { @Inject public GermanShepardRepository() { super(GermanShepard.class); } } 与正确的正则表达式一起使用,如下所示:

@Inject
GermanShepardRepository germanShepardRepository;

RealmResults<GermanShepard> results = germanShepardRepository.findAll(realm);

String type;将匹配6位数的用户名或5位数后的字母。

作为改进,您可以使用此javax.xml命令替换Android APIs(17, 20,25)

grep

答案 1 :(得分:0)

grep with perl regex:

grep -oP '\w:\d{5}' /etc/passwd

示例结果:

4:65534
x:65534

我假设您在etc / passwd中引用密码加密字段,该字段用冒号分隔;但如果你真的只关心实际以字母开头的UID,那么只需删除正则表达式中的第二个冒号'\w\d{5}'