저번 시간에는 notepad++를 이용해서, diff를 사용해 보는 것이였습니다. 이번에는 여러 패턴들을 찾고 한번에 바꾸는 것도 해 보도록 하겠습니다. 당연하게도, 패턴들을 찾는 것이니, 공식 문서의 이 부분이 유용할 듯 싶네요. 먼저 CR LF부터 보도록 하겠습니다. 리눅스하고, 윈도우하고 개행 처리 방식이 다릅니다. 윈도우는 LF 앞에 CR이 붙는데, 리눅스는 그렇지 않습니다. 기호 보기에서 특수 문자 표시에 체크를 해 주겠습니다. 그러면 1 뒤에 CR LF가 있고, 2 뒤에 또 CR LF가 있어요. CR은 캐리지 리턴이라 합니다. \r로 표현이 됩니다. 이것이 몇 개나 있는지 찾고 싶습니다. 찾기에서 찾기 모드를 정규 표현식을 선택해 줍시다. 그 다음에 \r\n을 입력하고 일치하는 개수를 누르시면..
정규표현식 검색 결과
filebeat에서, log 파일을 긁어갈 때 multiline을 설정하는 것이 있습니다. 이번 시간에는 이 중에서 간단하게 pattern만 잘 설정해 보도록 하겠습니다. Filebeat에서 logstash로 보내지 않고, 바로 ElasticSearch로 보냅니다. 로그가 어떻게 elasticsearch에 적재되는지, kibana로 보도록 하겠습니다. log.file.path로 불러 오는군요. 저기서, /home/cho/jo_test/logs는 사실, log가 발생하는 프로그램이, 로그를 저장하는 위치입니다. 해당 프로그램의 logback-spring.xml 파일의 일부입니다. LOG_DIR이 logs 밑으로 잡혀있고, 저는 이 디렉토리 밑에 로그들을 모두 떨굴 겁니다. 제 서버에서는 이 위치에 떨굴 겁..
String 클래스의 replaceAll 메서드는 상당히 많이 쓰는 메서드 중 하나입니다. 이것의 성능 문제에 대해서는, 이미 다른 곳에서도 많이 언급이 되기도 했습니다. 만.. 한 번 더 짚고 넘어가셔도 좋을 듯 싶습니다. 사실 제대로 분석하시려면 컴파일러나 프로그래밍 언어론을 보시는 게 도움이 많이 될 겁니다. replaceAll 메소드는 크게 어려운 게 없습니다. 단지, regex 패턴을 찾으면, 그것을 replacement로 대체합니다. 예를 들자면, 숫자를 없애기 위해서는 regex에 "[0-9]"를, replacement에 ""을 넣으면 됩니다. 내부를 보겠습니다. 보면, Parrern.compile(regex).matcher(this).replaceAll(replacement); 이 문장이 ..
패턴이 일치하는 내용을 빠르게 찾으려고 할 때, grep 명령어는 자주 쓰는 편입니다. 패턴이라 하면, regex가 들어갈 거 같은데.. 네. 사실 그것을 조금이라도 알면 꿀은 먹을 수 있다는 장점이 있습니다. 작업 속도가 중요한 환경에서는. 눈치 안 보이게 하려면 익혀두는 수밖에 없는 듯 싶어요. file에서 패턴과 일치하는 부분이 있는 행을 결과값으로 내보냅니다. 그런데, 사실 이런 패턴을 생각보다 많이 씁니다. 명령어 1의 결과를 input으로 받아서, grep option pattern을 수행합니다. 예를 들어, ls -ail이 명령어 1이였다면, ls -ail의 결과에, pattern과 일치하는 행을 리턴합니다. 생각보다, 이는 매우 강력한 도구가 될 수 있습니다. 예를 들자면, 프로세스들 중에..
저번에 LIKE 연산자를 배웠습니다. 이번에는 조금 더 복잡한 패턴 매칭에 대해서 다뤄보겠습니다. [관련글] LIKE 연산자 알아봅시다. 눈치 채신 분도 있으실지 모르겠습니다. 자바에서 파싱할 때, 정규 표현식을 자주 쓰는데요. mysql은, REGEXP 라는 것으로, 정규식을 사용할 수 있습니다. 처음과 끝은 각각 ^과 $로 표현할 수 있어요. 예를 들어서, '^a'라면, a로 시작하는 패턴입니다. 그리고 'E$'이라면, E로 끝나는 패턴입니다. 그러면 '^eat$'은 무엇을 의미할까요? "eat"를 찾으라는 거겠네요. 그리고, .은 임의의 문자를 의미하는데요. '^...$'은, 길이가 3인 문자열이 패턴에 매칭된다는 이야기입니다. 이 쿼리를 수행해 봅시다. 그러면 문자열이 시작하고 임의의 문자가 3개..
최근댓글