sed ou grep para obter apenas os valores sem números

1

Eu tenho um arquivo como abaixo.

 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

Eu quero apenas os valores após . Preciso apenas dos valores como VMWare ESX, SCCM etc para armazenar em uma matriz.

Eu tentei o comando abaixo.

echo $line | grep -o -P '.'

Mas está me dando personagens antes do ponto.

    
por Ramesh 08.02.2014 / 08:14

3 respostas

4

Para remover os caracteres antes e incluindo a ocorrência mais à direita de um ponto seguido por um espaço.

sed 's/.*\. //' < file

Se .␣ aparecer mais de uma vez e você só quiser remover até a primeira ocorrência, o truque é:

sed 's/\. /\
/;s/.*\n//' < file

(isto é, substitua a ocorrência primeiro por um caractere de nova linha e remova tudo para essa nova linha).

No entanto, no seu caso,

sed 's/^[^.]*\. //' < file

(remova uma seqüência principal de caracteres não pontilhados seguidos de um ponto e um espaço).

ou até mesmo:

cut -c5- < file

(remova os primeiros 4 caracteres) deve ser o suficiente.

Usando o GNU grep com suporte para PCRE recente:

grep -Po '\. \K.*'
    
por 08.02.2014 / 09:12
2

Use

sed 's/.*\.\ //' your-file-name

para remover os caracteres antes e incluindo o ponto seguido pelo espaço.

    
por 08.02.2014 / 08:31
1

Em awk :

awk -F'. ' '{$1=""; print $0}' your_file
    
por 08.02.2014 / 11:13

Tags