Bash Script 에서 문자열 변수 조작

https://www.snoopybox.co.kr/1811

구분자 (Delimiter / Split) 이용

  • ${변수명#삭제문자} : 좌측부터 가장 짧게 매칭되는 패턴 삭제
  • ${변수명##삭제문자} : 좌측부터 가장 길게 매칭되는 패턴 삭제
  • ${변수명%삭제문자} : 우측부터 가장 짧게 매칭되는 패턴 삭제
  • ${변수명%%삭제문자} : 우측부터 가장 길게 매칭되는 패턴 삭제
  • 와일드 카드(*, ?) 사용 가능
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
[root@NETo-c7test01 ~]# AAA="AAABBBCCCBBBDDDAAA"
[root@NETo-c7test01 ~]# echo ${AAA#A*B}
BBCCCBBBDDDAAA
[root@NETo-c7test01 ~]# echo ${AAA##A*B}
DDDAAA
[root@NETo-c7test01 ~]# echo ${AAA%B*A}
AAABBBCCCBB
[root@NETo-c7test01 ~]# echo ${AAA%%B*A}
AAA
[root@NETo-c7test01 ~]# AAA="AAABBBCCCBBBDDDAAA" [root@NETo-c7test01 ~]# echo ${AAA#A*B} BBCCCBBBDDDAAA [root@NETo-c7test01 ~]# echo ${AAA##A*B} DDDAAA [root@NETo-c7test01 ~]# echo ${AAA%B*A} AAABBBCCCBB [root@NETo-c7test01 ~]# echo ${AAA%%B*A} AAA
[root@NETo-c7test01 ~]# AAA="AAABBBCCCBBBDDDAAA"
[root@NETo-c7test01 ~]# echo ${AAA#A*B}
BBCCCBBBDDDAAA
[root@NETo-c7test01 ~]# echo ${AAA##A*B}
DDDAAA
[root@NETo-c7test01 ~]# echo ${AAA%B*A}
AAABBBCCCBB
[root@NETo-c7test01 ~]# echo ${AAA%%B*A}
AAA
  • #*= : 좌측부터 시작해 맨 처음으로 찾은 =까지의 모든 문자 삭제
  • ##*= : 좌측부터 시작해 맨 마지막으로 찾은 =까지의 모든 문자 삭제
  • %=* : 우측부터 시작해 맨 처음으로 찾은 =까지의 모든 문자 삭제
  • %%=* : 우측부터 시작해 맨 마지막으로 찾은 =까지의 모든 문자 삭제
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ rootfs="debian-jessie-armhf-target+gstreamer"
$ echo ${rootfs}
debian-jessie-armhf-target+gstreamer
$ echo ${rootfs%%+*}
debian-jessie-armhf-target
$ echo ${rootfs##*+}
gstreamer
$ rootfs="debian-jessie-armhf-target+gstreamer" $ echo ${rootfs} debian-jessie-armhf-target+gstreamer $ echo ${rootfs%%+*} debian-jessie-armhf-target $ echo ${rootfs##*+} gstreamer
$ rootfs="debian-jessie-armhf-target+gstreamer"

$ echo ${rootfs}
debian-jessie-armhf-target+gstreamer

$ echo ${rootfs%%+*}
debian-jessie-armhf-target

$ echo ${rootfs##*+}
gstreamer

인덱스 이용

  • ${변수명: 시작지점} : 시작지점부터 끝까지 출력
  • ${변수명: 시작지점: 갯수(양수)} : 시작지점부터 갯수 만큼 출력
  • ${변수명: 시작지점: 끝지점(음수)} : 시작지점부터 끝지점 까지 출력
  • 양수 : 좌측부터 또는 갯수
  • 음수 : 우측부터, 빈칸(space) 또는 괄호() 삽입 필수
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ rootfs="debian-jessie-armhf-target+gstreamer"
$ echo ${rootfs}
debian-jessie-armhf-target+gstreamer
$ echo ${rootfs: 0}
debian-jessie-armhf-target+gstreamer
$ echo ${rootfs: 7: 6}
jessie
$ echo ${rootfs: -9}
gstreamer
$ echo ${rootfs: 7: -10}
jessie-armhf-target
$ rootfs="debian-jessie-armhf-target+gstreamer" $ echo ${rootfs} debian-jessie-armhf-target+gstreamer $ echo ${rootfs: 0} debian-jessie-armhf-target+gstreamer $ echo ${rootfs: 7: 6} jessie $ echo ${rootfs: -9} gstreamer $ echo ${rootfs: 7: -10} jessie-armhf-target
$ rootfs="debian-jessie-armhf-target+gstreamer" 

$ echo ${rootfs}
debian-jessie-armhf-target+gstreamer

$ echo ${rootfs: 0}
debian-jessie-armhf-target+gstreamer

$ echo ${rootfs: 7: 6}
jessie

$ echo ${rootfs: -9}
gstreamer

$ echo ${rootfs: 7: -10}
jessie-armhf-target

길이

  • ${#변수명} : 변수의 길이 출력
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ echo ${#rootfs}
36
$ echo ${#rootfs} 36
$ echo ${#rootfs}
36
이 글은 카테고리: Tip & Tech에 포함되어 있으며 태그: , , , , , , (이)가 사용되었습니다. 고유주소를 북마크하세요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다