제 경우에는 "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

관련 정보