리눅스 분류
sed 명령어
작성자 정보
- 전민 작성
- 작성일
컨텐츠 정보
- 2,002 조회
- 0 추천
- 목록
본문
아래 명령어 해석 해주십시오.
[~]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
이렇게 나옵니다.
그럼 부탁드립니다.
[~]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
등록된 댓글이 없습니다.