문자열을 배열로 나누려면 awk
함수를 사용하십시오 split()
.
awk '{split($0, a, ":")}'
# ^^ ^ ^^^
# | | |
# string | delimiter
# |
# array to store the pieces
구분 기호를 지정하지 않으면 FS
공백이 기본값으로 사용 됩니다.
$ awk '{split($0, a); print a[2]}' <<< "a:b c:d e"
c:d
예를 들어 구분 기호를 제공 할 수 있습니다 :
.
$ awk '{split($0, a, ":"); print a[2]}' <<< "a:b c:d e"
b c
다음을 통해 설정하는 것과 같습니다 FS
.
$ awk -F: '{split($0, a); print a[1]}' <<< "a:b c:d e"
b c
gawk에서는 구분 기호를 정규 표현식으로 제공 할 수도 있습니다.
$ awk '{split($0, a, ":*"); print a[2]}' <<< "a:::b c::d e" #note multiple :
b c
그리고 네 번째 매개 변수를 사용하여 모든 단계에서 구분 기호가 무엇인지 확인하십시오.
$ awk '{split($0, a, ":*", sep); print a[2]; print sep[1]}' <<< "a:::b c::d e"
b c
:::
GNU awk 의 man 페이지를 인용 해 봅시다 :
split (문자열, 배열 [, fieldsep [, seps]])
문자열 을 fieldsep 로 구분 된 조각으로 나누고 조각을 배열에 저장 하고 구분자 문자열을 seps 배열에 저장합니다. 첫번째 조각에 저장되고 array[1]
, 두 번째 부분 array[2]
등등과. 제 인수 문자열 값 fieldsep는 분할 위치를 설명하는 정규 표현식 인 문자열 (만큼 FS가 입력 레코드를 분할하는 위치를 설명하는 정규식 될 수있다). 경우 fieldsep은 생략 값 FS가 사용된다. split()
작성된 요소 수를 반환합니다. seps 는 gawk
확장이며, seps[i]
사이에 구분자 문자열이 있습니다.array[i]
그리고 array[i+1]
. 경우 fieldsep은 단일 공간은 다음 선행 공백이 들어가는 seps[0]
내로 진행 공백 후행는 seps[n]
여기서 N 의 리턴 값 split()
(즉, 배열의 요소 수).
OFS
쉼표를 붙여서print
별도의 인수로 확인하십시오.