首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sed正则表达式部分

sed正则表达式部分
EN

Stack Overflow用户
提问于 2022-11-23 02:48:54
回答 2查看 39关注 0票数 0

现在,我正在尝试删除在行尾有80000或更高号的文件的所有行。

例如

詹妮弗·考恩:548-834-2348:583 Laurel Ave,TX,金斯维尔,83745:10/1/35:58900

:408-253-3122:123 Park St. .,加利福尼亚州圣何塞,04086:7/25/53:85100

当我运行sed时,命令应该只删除Jon DeLoach的行。

我试过了直到

代码语言:javascript
运行
复制
sed '/:0*[1-9][0-9]{5,}|:0*[8-9][0-9]{4,}/d' datebook.txt 

因为

代码语言:javascript
运行
复制
egrep ':0*[1-9][0-9]{5,}|:0*[8-9][0-9]{4,}' datebook.txt 

返回所有有800000或更高版本的行。

但是,sed命令实际上无法工作,并发现这是因为我创建的正则表达式

代码语言:javascript
运行
复制
 ':0*[1-9][0-9]{5,}|:0*[8-9][0-9]{4,}'

只为egrep工作,而不是grep

我对正则表达式很陌生,也有点搞不懂如何从egrep变成grep。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-23 03:48:48

这是一个很尴尬的问题,但你可以调整你现有的答案来得到:

代码语言:javascript
运行
复制
sed '/:[8-9][0-9]\{3,\}$/d; /:[0-9]\{6,\}$/d' file

我不知道您还能用sed做什么(它非常脆弱);这样可以解决您的问题吗?

票数 1
EN

Stack Overflow用户

发布于 2022-11-23 03:14:48

正则表达式不理解数值,如果这样做,将是一个噩梦。

您正在处理字段中的数据,所以这对于awk来说是一个很好的任务。

您希望awk遍历所有的行,然后打印出第五字段小于80000的行。

代码语言:javascript
运行
复制
awk -F":" '$5 < 80000' datebook.txt

-F":"说冒号是字段分隔符。$5的意思是第五个字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74541230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档