私の場合、「sg」で始まるすべての値をどのようにgrepしますか?

私の場合、「sg」で始まるすべての値をどのようにgrepしますか?

そのため、次のような.txtファイルがあります。

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

"sg"で始まるすべての値をgrepしたいです。SG-XXXXXX。どうすればいいですか?

私はこれを試しましたが、sgの長いリストを得ました。

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

すべての値が「sg」で始まるようにしたい。

このように:

sg-77aaaa10
sg-796d1b1e 
sg-79a4861d

答え1

この試み:

$ grep -o 'sg-[^ ]*' ip.txt
sg-77aaaa10
sg-7842031d
sg-796d1b1e
sg-79a4861d
sg-79a4861d
  • [^ ]*空白以外の文字を表します。[0-9a-f]16進文字のみが含まれていることがわかっている場合は、次のものを使用することもできます。
  • sort -uまたはパイプによる重複sort | uniq排除awk '!seen[$0]++'


sg*0 回以上の一致がs次にあることを示します。g

関連情報