[英]Regex for grep from end of line
用於/ etc / passwd中的一行
我想從行尾($)grep到行尾的第一個“:”。
例如,\\ n johndoe:x:39:39:John Doe:/ var / lib / canna:/ sbin / nologin
我想grep“ / sbin / nologin”
什么是適合我的grep命令使用的正則表達式?
如果您也不介意選擇冒號,請使用:
grep -o -e ':[^:]*$' /etc/passwd
選擇一個冒號,之后沒有其他冒號,然后選擇行尾,僅打印匹配的內容。
如果你不想結腸和你有一個啟用PCRE- grep
,看看正則表達式為先行“后面沒有”在grep
? ; 您需要對其進行改編,以進行先后而不是先行,僅此而已。
如果您沒有使用-o
grep
,請改用sed
(省略冒號):
sed -n -e '/.*:\([^:]*\)$/ s//\1/p' /etc/passwd
這可能是最便攜式的解決方案。
(在macOS Sierra和Mac OS X上, /etc/passwd
文件的頂部以#
開頭帶有注釋行sed
命令不會打印這些行,因為它們上面沒有任何冒號。因此,Mac,Linux和Unix的其他變體都沒有使用sed
高級(又是非便攜式)功能。)
如何使用cut
,這更直接:
echo 'johndoe:x:39:39:John Doe:/var/lib/canna:/sbin/nologin' | cut -d ':' -f 7
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.