질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

sed 명령어

작성자 정보

  • 전민 작성
  • 작성일

컨텐츠 정보

본문

아래 명령어 해석 해주십시오.

[~]echo "1234 -a aa a -b bb -c cc -d dd" | sed "s/.*-a ([^-]+) -.*/1/"
결과 : aa a

.*-a 는 -a 이전의 모든 문자열을 뜻하는 건 알겠습니다.
실행시키기 전에 결과를 예측할 때는 -b bb 가 나올 줄 알았는데 아니더군요.
이렇게 예측한 이유는 .*-a 이후에 ([^-]+) 즉 -로 시작하는 단어를 1에 저장, -.*는 그 다음 - 인 -c 이후의 모든 문자, 이렇게 해석했습니다.

테스트 겸해서
echo "1234 -a aa a =b bb -c cc -d dd" | sed "s/.*-a ([^=]+) -.*/1/" 를 실행하니
1234 -a aa a =b bb -c cc -d dd
이렇게 나오는 군요.. 이건 또 왜 이렇게 나오죠?

echo "1234 -a aa a -b bb -c cc -d dd" | sed "s/.*-a ([^-]) -.*/1/" 이렇게 '+'를 빼도 1234 -a aa a -b bb -c cc -d dd
이렇게 나옵니다.

그럼 부탁드립니다.

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,076 명
  • 현재 강좌수 :  36,001 개
  • 현재 접속자 :  550 명