簡體   English   中英

使用grep和regex從etc / password獲取特定用戶列表

[英]Using grep and regex to get specific users list from etc/password

我想從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,但由於我的正則表達式有限,所以我們將不勝感激。 謝謝!

您可以像這樣使用正確的正則表達式使用grep

cut -d: -f1 /etc/passwd | grep -E '^[a-zA-Z0-9][0-9]{5}$'
398329
y32839
392009
r39288

^[a-zA-Z0-9][0-9]{5}$將匹配6位數的用戶名或后跟5位數的字母。

作為改進 ,您可以使用以下單個awk命令替換cut + grep

awk -F: '$1 ~ /^[a-zA-Z0-9][0-9]{5}$/{print $1}' /etc/passwd

grep with perl regex:

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

示例結果:

4:65534
x:65534

我假設您指的是etc / passwd中的密碼加密字段,該字段用冒號分隔; 但如果你真的只關心實際上以字母開頭的UID,那么只需刪除正則表達式中的第二個冒號, '\\w\\d{5}'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM