首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sed或grep只能得到没有数字的值。

sed或grep只能得到没有数字的值。
EN

Unix & Linux用户
提问于 2014-02-08 07:14:34
回答 2查看 422关注 0票数 1

我有一份像下面这样的文件。

代码语言:javascript
运行
复制
 1. VMware ESX
 2. SCCM
 3. Healthcare Information Technology
 4. vSphere
 5. Citrix Metaframe
 6. IT Service Management
 7. ITIL
 8. Active Directory
 9. Project Portfolio Management
10. Windows
11. Incident Management
12. Change Management
13. Disaster Recovery
14. Governance
15. Citrix
16. Stakeholder Management
17. Project Delivery
18. IT Operations
19. Infrastructure

我只想要在.之后的值,我只需要VMWare ESX、SCCM等值来存储在数组中。

我试过以下命令。

代码语言:javascript
运行
复制
echo $line | grep -o -P '.'

但它给了我在点之前的角色。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2014-02-08 08:12:16

删除字符之前,并包括最右边的一个点的出现,然后是一个空格。

代码语言:javascript
运行
复制
sed 's/.*\. //' < file

如果.␣可能出现不止一次,而且您只想删除直到第一次出现,那么诀窍是:

代码语言:javascript
运行
复制
sed 's/\. /\
/;s/.*\n//' < file

(即用换行符替换第一个事件,然后删除到该换行符的所有内容)。

但是,在你的情况下,

代码语言:javascript
运行
复制
sed 's/^[^.]*\. //' < file

(删除一个非点字符的前导序列,后面跟着一个点和一个空格)。

甚至:

代码语言:javascript
运行
复制
cut -c5- < file

(移除前4个字符)就足够了。

使用GNU grep并支持最近的PCRE:

代码语言:javascript
运行
复制
grep -Po '\. \K.*'
票数 4
EN

Unix & Linux用户

发布于 2014-02-08 07:31:43

使用

代码语言:javascript
运行
复制
sed 's/.*\.\ //' your-file-name

若要删除前面的字符,并包括点后面的空格,请执行以下操作。

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

https://unix.stackexchange.com/questions/114164

复制
相关文章

相似问题

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