簡體   English   中英

行尾的grep正則表達式

[英]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.

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