目前我正在自学awk和sed。我发现在线书Sed & Awk 101黑客,我发现到目前为止非常好。尽管如此,我发现我已经有几天没有继续了,因为我无法理解“分组”的概念--这是输入文件
cat employee.txt
101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Managerbook sed命令如下:
sed 's/\([^,]*\).*/\1/g' employee.txt此命令的输出如下:
101
102
103
104
105我试着去理解这个命令,但这对我来说毫无意义。然后,在检查sed文档(man )之后,我注意到当不使用标志-E时,正则表达式采用BRE语法。你能告诉我为什么这个表达式不能得到相同的输入吗?
sed -E 's/^(\d+),.+/\1/g' employee.txt提前感谢!
发布于 2019-06-11 19:54:53
\d在sed中不起作用。您可以使用[[:digit:]]或[0-9]代替:
sed -E 's/^([[:digit:]]+),.+/\1/' employee.txt
sed -E 's/^([0-9]+),.+/\1/' employee.txt注意,我删除了示例中不需要的结尾处的g。
相关信息:
https://unix.stackexchange.com/questions/524279
复制相似问题