17.문자열 함수

Edit

17.1문자열 검색

17.1.1contains

문법

contains(대상문자열표현식, 부분문자열표현식)

대상 문자열이 특정 부분문자열을 포함하는지 여부를 반환합니다.

사용 예

contains("foo", "o") => true
contains("bar", "o") => false
contains("baz", null) => false
contains(null, null) => false

17.1.2indexof

문법

indexof(대상문자열표현식, 부분문자열표현식[, 시작위치표현식])

대상 문자열에서 부분 문자열의 시작 위치를 검색합니다. 대상 문자열에서 부분 문자열을 찾을 수 없는 경우에는 -1을 반환합니다. 대상 문자열이나 부분 문자열이 null 인 경우 null을 반환합니다.

사용 예

indexof("hello world", "world") => 6
indexof("hello world", "foo") => -1
indexof("hello world", null) => null
indexof(null, "world") => null
indexof(null, null) => null
indexof("hello world", "o", 5) => 7

17.2문자열 길이

17.2.1len

문법

len(표현식)

문자열의 길이를 반환합니다. 표현식이 null인 경우 0을 반환합니다. 주어진 표현식이 문자열이 아닌 경우, 문자열로 변환된 후의 문자열 길이를 반환합니다.

사용 예

len("sample") => 6
len(null) => 0
len(123) => 3
len(1.2) => 3

17.3문자열 조립

17.3.1concat

문법

concat(표현식1, 표현식2, …)

여러 개의 문자열을 결합하여 하나의 문자열로 만듭니다. 문자열이 아닌 표현식의 경우 문자열로 변환 후 결합됩니다.

사용 예

1) hello와 world 문자열 결합

concat("hello", "world") => "helloworld"

2) a와 b와 c 문자열 결합 (3개 이상 가능)

concat("a", "b", "c") => "abc"

17.3.2format

문법

format(문자열 템플릿, 인자1, 인자2, ...)
format(문자열 템플릿, 인자 배열)

주어진 인자들을 이용해 만들어진 새 문자열을 반환합니다.

문자열 템플릿

형식 지시자를 포함한 문자열 템플릿

인자 혹은 인자 배열

주어진 형식으로 문자열을 표현하는데 이용될 입력값

사용 가능한 형식 지시자는 다음 링크의 정보를 참고하십시오:
http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

사용 예

format("date: %04d-%02d-%02d", 2004, 3, 29) => "date: 2004-03-29"
format("%3$s-%1$s-%2$s", 
       groups("Mar 29 2004", "(.*?) (.*?) (.*)")) => "2004-Mar-29"

17.3.3strjoin

문법

strjoin(구분자, 배열)

주어진 배열을 지정된 구분자로 구분된 하나의 문자열로 병합합니다.

구분자

문자열 상수. 배열 병합 시 구분자로 사용됩니다. 구분자에 상수가 아닌 표현식이 들어오면 문법 오류가 발생합니다.

배열

하나의 문자열을 생성하는데 사용할 데이터 원본. 배열이 null인 경우 null을 반환합니다. 배열의 요소가 null인 경우 병합된 문자열에도 null이 표시됩니다.

사용 예

strjoin(",", null) => null
strjoin(",", array(1, 2, 3)) => "1,2,3"

17.3.4kvjoin

문법

kvjoin(키값구분자, 항목구분자 [,필터링정규식])

모든 key와 value를 결합하여 하나의 문자열을 만듭니다. 구분문자를 지정하여 값들을 구분 할 수 있으며, 정규표현식을 이용하여 key를 필터링 할 수 있습니다.

키값 구분자

키와 값을 구분하는 문자

항목 구분자

각 키/값 쌍들을 구분하는 문자

필터링 정규식

키가 정규표현식과 일치하는 경우만 결합, 미지정시 모든 값 결합

사용 예

1) 키/값 구분자는 : 으로, 쌍 구분자는 ^^으로 조립

kvjoin(":", "^^")

2) src.* 정규표현식과 일치하는 필드만 추출하여 키/값 구분자는 : 으로, 쌍 구분자는 ^^으로 조립

kvjoin(":", "^^", "src.*")

17.3.5lpad

문법

lpad(문자열, 길이, [패딩문자])

문자열의 왼쪽에 패딩문자를 삽입하여 주어진 길이의 문자열을 만듭니다. 문자열 이외의 타입이 들어온 경우 문자열로 자동 변환 후 수행합니다. 인자 중 어느 하나가 null이면 null을 반환합니다.

길이

반환되는 문자열의 길이. 주어진 문자열보다 작을경우 문자열 시작부터 지정된 길이 까지의 부분 문자열을 반환

패딩문자

길이가 2 이상의 문자열인 경우 왼쪽부터 반복됨. 미지정시 공백 문자(space)

사용 예

lpad("string", 10) => "    string"
lpad("string", 10, "p") => "ppppstring"
lpad("string", 10, "pad") => "padpstring"
lpad("string", 3, "pad") => "str"
lpad("string", null, "pad") => null
lpad("string", 3, null) => null

17.3.6rpad

문법

rpad(문자열, 길이, [패딩문자])

문자열의 오른쪽에 패딩문자를 삽입하여 주어진 길이의 문자열을 만듭니다. 문자열 이외의 타입이 들어온 경우 문자열로 자동 변환 후 수행합니다. 인자 중 어느 하나가 null이면 null을 반환합니다.

길이

반환되는 문자열의 길이. 주어진 문자열보다 작을경우 문자열 시작부터 지정된 길이 까지의 부분 문자열을 반환

패딩문자

길이가 2 이상의 문자열인 경우 왼쪽부터 반복됨. 미지정시 공백 문자(space)

사용 예

rpad("string", 10) => "string    "
rpad("string", 10, "p") => "stringpppp"
rpad("string", 10, "pad") => "stringpadp"
rpad("string", 3, "pad") => "str"
rpad("string", null, "pad") => null
rpad("string", 3, null) => null

17.3.7foreach

문법

foreach(표현식, 리스트표현식1, 리스트표현식2, ...)

배열 내의 인자를 빼내지 않고 배열을 대상으로 혹은 복수의 배열끼리 연산을 수행합니다. 매개변수로 전달되는 리스트는 길이가 같을 필요는 없으나 긴 쪽으로 맞춰지면서 null 로 값이 채워져 연산을 수행합니다. 인자로 리스트 대신 스칼라 값이 전달되면 리스트로 복제하여 확장 첫번째 리스트를 _1, 두번째 리스트를 _2의 방식으로 치환하여 표현식대로 각각 연산합니다.

사용 예

두 배열의 연산

json "{}" | eval arr1= array(-1, -2, -3, -4, -5), arr2= array(1,2,3,4,5) 
| eval _output = foreach(_1 * _2, arr1, arr2) 

=> [-1,-4,-9,-16,-25]

17.4문자열 절단

17.4.1trim

문법

trim(표현식)

문자열의 좌우에서 공백 문자(탭, 개행 포함)를 제거합니다. 주어진 표현식이 null인 경우 null을 반환합니다. 주어진 표현식이 문자열이 아닌 경우, 자동으로 문자열 변환한 뒤에 공백을 제거한 문자열을 반환합니다.

사용 예

trim(" hello world ") => "hello world"
trim(123) => "123"
trim(null) => null

17.4.2left

문법

left(표현식, 길이)

왼쪽 부분문자열을 반환합니다. 지정된 길이보다 문자열의 길이가 짧은 경우 문자열 전체가 반환됩니다. 문자열이 이외의 타입이 들어온 경우 문자열로 자동 변환 후 부분문자열 반환을 수행합니다.

표현식

원본 문자열

길이

0 이상의 상수만 허용되며 왼쪽에서 몇 개의 문자를 잘라서 반환할지 지정합니다.

사용 예

left("0123456789", 4) => "0123"
left("0123456789", 11) => "0123456789"
left("0123456789", 0) => ""
left(1234, 2) => "12"
left(1.23, 3) => "1.2"
left(null, 3) => null

17.4.3right

문법

right(표현식, 길이)

오른쪽 부분문자열을 반환합니다. 지정된 길이보다 문자열의 길이가 짧은 경우 문자열 전체가 반환됩니다. 문자열이 이외의 타입이 들어온 경우 문자열로 자동 변환 후 부분문자열 반환을 수행합니다.

표현식

원본 문자열

길이

0 이상의 상수만 허용되며 오른쪽에서 몇 개의 문자를 잘라서 반환할지 지정합니다.

사용 예

right("0123456789", 4) => "6789"
right("0123456789", 11) => "0123456789"
right("0123456789", 0) => ""
right(1234, 2) => "34"
right(1.23, 3) => ".23"
right(null, 3) => null

17.4.4substr

문법

substr(표현식, 시작위치)
substr(표현식, 시작위치, 끝위치)

원본 문자열에서 지정된 위치의 부분문자열을 반환합니다. 표현식이 null인 경우 null을 반환합니다. 시작 위치가 문자열 길이보다 큰 경우 null을 반환합니다. 끝 위치가 문자열 길이보다 큰 경우 시작 위치부터 문자열 끝까지 반환합니다. 표현식이 문자열 타입이 아닌 경우 문자열로 자동 변환 후 부분 문자열을 반환합니다.

시작 위치

정수. 음수일 경우 끝에서부터 계산

끝 위치

생략시엔 문자열 끝. 정수. 음수일 경우 끝에서부터 계산

사용 예

substr("0123456789", 2) => "23456789"
substr("0123456789", -2) => "89"
substr("0123456789", 0, 3) => "012"
substr("0123456789", 2, 4) => "23"
substr("0123456789", 4, 12) => "456789"
substr("0123456789", 5, 5) => ""
substr("0123456789", 10, 11) => null
substr("0123456789", -1, 11) => "9"
substr(null, 0, 3) => null

17.4.5split

문법

split(대상문자열표현식, 부분문자열표현식)

대상 문자열을 부분문자열을 이용하여 분리한 문자열 배열을 반환합니다.

사용 예

split("logpresso", "pre") => ["log", "sso"]
split("logpresso", "a") => ["logpresso"]
split("a,b,c,d", ",") => ["a","b","c","d"]

17.5문자열 변환

17.5.1lower

문법

lower(표현식)

문자열을 소문자로 변환합니다. 표현식이 null인 경우 null을 반환합니다. 문자열 이외의 타입이 들어오는 경우 문자열로 자동 변환 후 소문자 변환을 수행합니다.

사용 예

lower("Hello World") => "hello world"
lower(1234) => "1234"
lower(null) => null

17.5.2upper

문법

upper(표현식)

문자열을 대문자로 변환합니다. 표현식이 null인 경우 null을 반환합니다. 문자열 이외의 타입이 들어오는 경우 문자열로 자동 변환 후 대문자 변환을 수행합니다.

사용 예

upper("Hello World") => "HELLO WORLD"
upper(1234) => "1234"
upper(null) => null

17.5.3replace

문법

replace(원본문자열, 대상패턴, 바꿀 문자열 [, 정규식 플래그 ])

문자열에서 주어진 패턴을 모두 찾아 지정한 문자열로 변경해 반환합니다.

원본 문자열 (필수)

원본 문자열 표현식

대상 패턴 (필수)

검색할 문자열. 정규표현식 플래그에 "re" 를 지정할 경우 정규표현식 패턴으로 검색합니다.

바꿀 문자열 (필수)

매칭된 문자열과 바꿀 문자열

정규식 플래그 (선택)

지정하지 않을 경우 일반 텍스트 검색, "re"로 지정할 경우 정규표현식 패턴 검색

사용 예

replace("hello world", "world" , "logpresso") => "hello logpresso"
replace("123412345", "12" , "!") => "!34!345"
replace("google", "^g" , "b", "re") => "boogle"
replace("A:2 B:3 C:5 hahaha A:12 B:13 C:15", "A:(\\d+) B:\\d+ C:(\\d+)", "$1 $2 \\$1", "re") => "2 5 $1 hahaha 12 15 $1"

17.5.4urldecode

문법

urldecode(원본 문자열 [, 인코딩 ])

주어진 URL을 디코드하여 반환합니다. 예를 들어 %20은 공백으로 변환됩니다.

원본 문자열

URL을 포함한 원본 문자열

인코딩

미지정 시 기본값 utf-8

사용 예

urldecode(null) => null
urldecode("%B7%CE%B1%D7%BA%D0%BC%AE", "EUC-KR") => 로그분석
urldecode("%EB%A1%9C%EA%B7%B8%EB%B6%84%EC%84%9D") => 로그분석

17.5.5fromhex

문법

fromhex(문자열표현식)

16진수 문자열을 바이너리로 변환합니다. 만약 매개변수 값이 문자열이 아니거나, 16진수 이외의 문자를 포함하거나, 문자열의 길이가 짝수로 떨어지지 않는 경우에는 null을 반환합니다. 이 함수는 대소문자를 가리지 않습니다.

사용 예

decode(fromhex("6162636465")) => "abcde"
fromhex("616263646") => null
fromhex(null) => null

17.5.6tohex

문법

tohex(바이너리표현식)

바이너리 값을 16진수 문자열로 변환합니다. 매개변수 값이 바이너리 타입이 아닌 경우에는 null을 반환합니다.

사용 예

tohex(encode("abcde")) => "6162636465"
tohex(1234) => null
tohex(null) => null

17.6정규표현식 추출

17.6.1groups

문법

groups(표현식1, 패턴)

문자열에서 주어진 정규표현식의 그룹에 매칭되는 항목들을 배열로 반환합니다.

원본 문자열

추출 대상 원본 문자열 표현식

패턴

그룹을 포함한 정규표현식 문자열

사용 예

groups("Mar 29 2004 09:54:39", "(.*?) (.*?) (.*?) ") => [Mar, 29, 2004]

17.7랜덤 문자열

17.7.1guid

문법

guid()

항상 유일한 GUID 문자열 값을 생성하여 반환합니다.

사용 예

guid() => "a1189dda-870e-4aea-8742-76dcb8398b49"
Count of comments [0]