【发布时间】:2019-07-01 12:52:25
【问题描述】:
我正在尝试使用 sed 和正则表达式来获取子字符串。我想得到由“:”分隔的第一个和第二个“字段”。
为了获取第一个字段,我使用了以下命令,但不知道如何获取第二个字段。
用于获取第一个字段的命令:
sed -r -n '1,2 s/([^:]+).*/\1/p' /etc/passwd
输入文件(示例):
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
命令结果:
root
daemon
但我尝试获取第一个(“root”)和第二个(“x”)字段(仅基于文件第一行的示例),但我没有成功。
我试过了:
sed -r -n '1,2 s/([^:]+).*([^:]+).*/\1 \2/p' /etc/passwd
命令结果:
root h
daemon n
想要的结果:
root x
daemon x
【问题讨论】:
-
使用 awk:
awk -F ':' '{print $1,$2}' file