我想从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,但由于我的正则表达式有限,所以我们将不胜感激。谢谢!
答案 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}'
。