我有一份像下面这样的文件。
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等值来存储在数组中。
我试过以下命令。
echo $line | grep -o -P '.'
但它给了我在点之前的角色。
发布于 2014-02-08 08:12:16
删除字符之前,并包括最右边的一个点的出现,然后是一个空格。
sed 's/.*\. //' < file
如果.␣
可能出现不止一次,而且您只想删除直到第一次出现,那么诀窍是:
sed 's/\. /\
/;s/.*\n//' < file
(即用换行符替换第一个事件,然后删除到该换行符的所有内容)。
但是,在你的情况下,
sed 's/^[^.]*\. //' < file
(删除一个非点字符的前导序列,后面跟着一个点和一个空格)。
甚至:
cut -c5- < file
(移除前4个字符)就足够了。
使用GNU grep
并支持最近的PCRE:
grep -Po '\. \K.*'
发布于 2014-02-08 07:31:43
使用
sed 's/.*\.\ //' your-file-name
若要删除前面的字符,并包括点后面的空格,请执行以下操作。
https://unix.stackexchange.com/questions/114164
复制相似问题