[데이터 추출 및 가공 08] sed 사용법 6: 정규 표현 (RegEx) (4) ^기호가 대괄호 []안에 들어갔을 때

데이터 추출과 가공
sed 사용법 6 정규 표현 (RegEx) (4) : ^기호가 대괄호 []안에 들어갔을 때 ^기호는 줄이 시작되는 것을 표현하는 기호임을 알아 보았었습니다. $기호도 있었는데 이 기호는 줄 맨끝을 표현하는 기호라는 것도 알아 보았었습니다. 그런데 ^기호가 대괄호([])안에 있을때는 다른 의미를 지닙니다. 예를 들어, [^a]는 a가 아닌 어떤 글자도 상관없다는 것을 표현합니다. 다음 커맨드를 보죠. echo "His name is Kylian Mbappé." | sed -r 's/[^a]/X/g' a가 아닌 모든 글자를 (공백도 포함해서) 모두 X로 바꿨씁니다. 혹시 모르니까 a뿐만 아니라 공백도 제외해보겠습니다. 그럴려면 '^a'다음에 '^ '를 추가해 [^a^ ]라고 쓰면됩니다. 커맨드 실행 결과를 보죠. echo "His name is Kylian Mbappé." | sed -r 's/[^a^ ]/X/g' 공백은 그대로 두고 a를 뺸 다른 글자를 모두 X로 바꿨습니다. ^기흐를 []안에 쓰는 방법은 많은 글자리스트를 대괄호 [] 안에 다 쓰지 않고 특정 글자만 제외할 수 있어, 정규표현(RegEx)애서 아주 유용하게…
Read More

[데이터 추출 및 가공 07] sed 사용법 5 : 정규 표현 (RegEx) (3) 소괄호 (), 마침표(.) , 별(*)표 사용법, 그리고 전화번호 데이터 추출 실전

데이터 추출과 가공
sed 사용법 5 : 정규 표현 (RegEx) (3) 소괄호 (), 마침표(.) , 별(*)표 사용법, 그리고 전화번호 데이터 추출 실전 키보드에 있는 괄호는 크게 세가지가 있습니다. ()는 소괄호 {}는 중괄호 []는 대괄호라고 부릅니다. 정규표현(RegEx)에서 중괄호 {}는 그앞에 있는 글자가 몇번 연달아 나오는지를 표시합니다. 만약에 z{3}는 z가 연달아 세번 나오는 것을, y{2,5}는 y가 연달아 두번 이상 다섯번 이하로 나오는 것을, x{4,}는 x가 연달아 네번 이상 나오는 것을 표시합니다. 대괄호 []는 나와도 되는 글자의 집합을 표시합니다. [abcd]{3}는 a, b, c, d중에 아무거나 연달아 세번 나오는 것을, [a-z]{2,5}는 알파벳 소문자 아무거나 연달아 두번 이상 다섯번 이하 나오는 것을, [0-9]{4,} 는 0에서 9까지 숫자 아무거나 연달아 네번 이상 나오는 것을 표시합니다. 만약에 소문자 대문자 관계없이 알파벳 아무거나하고 0에서 9까지 숫자 아무거나 연달아 10번 이상 나오는 것을 표시하려면 [a-zA-Z0-9]{10,}라고 표시하면 됩니다. 이제 남을 괄호는 소괄호()입니다. 정규표현에서…
Read More

[데이터 추출 및 가공 06] sed 사용법 4 : 정규 표현 (regular expression) 2: {}와 [] 사용하기

데이터 추출과 가공
sed 사용법 4 : 정규 표현 (regular expression) (2) {}와 [] 사용하기 정규 표현에서 a+는 a가 한 자만 있거나 두 개 또는 그 이상이 연달아 붙어있는 것을 나타냅니다. 어떨때는 a가 특정갯수만큼 연달아 붙어있는 것을 나타내야 할 때가 있습니다. 이럴 때는 {}기호를 씁니다. a가 2개만 연달아 붙어있는 것은 a{2} 로 나타낼 수 있습니다. 's/a{2}/A/'를 써서 sed를 실행하면 a가 연달아 두개 붙어있는 부분을 A로 바꿉니다. echo "abaabbaaabbbaaaabbbb" | sed -r 's/a{2}/A/' abAbbaaabbbaaaabbbb 그런데 처음에 있는 aa만 A로 바꿔지 aaa나 aaaa속에 연달아 a가 두개 붙어있는 것은 바꾸지 않았습니다. 그 이유는 이전에도 설명했지만 줄에서 처음에 나타나는 것만 바꿔서 그렇습니다. 다음에 나타나는 것까지 모두 바꾸려면 맨뒤에 g 옵션을 붙여야 합니다. echo "abaabbaaabbbaaaabbbb" | sed -r 's/a{2}/A/g' abAbbAabbbAAbbbb 원래 aaa가 있는 곳에서는 처음 2개를 A로 바꿔 Aa가 됩니다. 이제는 a가 하나만 남기때문에 이 a는 A로 바꾸지…
Read More