![](/img/trans.png)
[英]grep filename with extension from a list of URLS using [regex]
[英]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.