Como grep todo valor começando com “sg” no meu caso

1

Então eu tenho esse arquivo .txt como este

TAGS    aws:cloudformation:stack-name   yanka-cloudformer
TAGS    aws:cloudformation:logical-id   WebServerSecurityGroup
SECURITYGROUPS  launch-wizard-3 created 2017-04-11T15:51:41.918+09:00   sg-77aaaa10     an-dx-trainning     vpc-878311e3
SECURITYGROUPS  This security group was generated by AWS Marketplace and is based on recommended settin s for CentOS 6 (x86_64) - with Updates HVM version 6 2014-09-29 provided by Centos.org  sg-7842031d     CentOS 6 -x86_64- - with Updates HVM-6 2014-09-29-AutogenByAWSMP-       270062507952    vpc-11d10f74
SECURITYGROUPS  from other cloud        sg-796d1b1e     rancher-demo-sg 270062507952    vpc-b4ef99d1
SECURITYGROUPS  default VPC security group      sg-79a4861d     Cfn-Vpc-Sg-temp-SecurityGroup2DefaultSG-JLBXQ8YG4RN5    270062507952    vpc-ded6c7bb
USERIDGROUPPAIRS        sg-79a4861d     270062507952

Eu só quero grep todo o valor começar com "sg" só que é sg-xxxxxx . Como posso fazer isso?

Eu tentei isso, mas o que tem uma longa lista de sg.

cat hello.txt | grep -o "sg*"
sg
sg
sg
sg

Quero que todos os valores sejam iniciados com "sg"

Assim:

sg-77aaaa10
sg-796d1b1e 
sg-79a4861d
    
por The One 07.12.2017 / 07:23

1 resposta

3

Tente isto:

$ grep -o 'sg-[^ ]*' ip.txt
sg-77aaaa10
sg-7842031d
sg-796d1b1e
sg-79a4861d
sg-79a4861d
  • [^ ]* significa diferente de caractere de espaço. Você também pode usar [0-9a-f] se souber que eles consistem em apenas caracteres hexadecimais
  • canalize-o para sort -u ou sort | uniq ou awk '!seen[$0]++' para remover duplicatas


sg* significa correspondência s seguido por g zero ou mais vezes

    
por 07.12.2017 / 07:40

Tags