我有一個文件(/ etc/passwd文件)用線的千想:在bash上使用sed將特定的字符串保留在一行中?
nom de login:password:uid:gid:nom en clair:home dir:shell
我想用sed 's/..etc..
保持「NOM恩克萊爾」字段並刪除其他部分我怎麼能請這麼做?
我在vi
使用此表達了這事
:%s#\%([^:]\+:\)\{4}\([^:]\+\).*#\1
我有一個文件(/ etc/passwd文件)用線的千想:在bash上使用sed將特定的字符串保留在一行中?
nom de login:password:uid:gid:nom en clair:home dir:shell
我想用sed 's/..etc..
保持「NOM恩克萊爾」字段並刪除其他部分我怎麼能請這麼做?
我在vi
使用此表達了這事
:%s#\%([^:]\+:\)\{4}\([^:]\+\).*#\1
使用awk
:
s='nom de login:password:uid:gid:nom en clair: home dir:shell'
awk -F: '{print $5}' <<< "$s"
nom en clair
使用sed
:
sed 's/^\([^:]*:\)\{4\}\([^:]*\).*$/\2/' <<< "$s"
nom en clair
你只需要一個捕獲組... – isedev 2014-10-02 14:08:17
是的,但默認'sed'不支持非捕獲組。 – anubhava 2014-10-02 14:09:38
謝謝,但我絕對必須使用sed .. – user3568611 2014-10-02 14:09:41
你想要做的替換所有的行呢? – 2014-10-02 14:05:13