2010. 11. 18. 12:15

Linux/Ubuntu Text 처리하기 (Regular Expression)

shell만 가능했던 초기 unix 시스템에서, 그것을 사용한다는 것은 주요 명령과 plain text file을 다루는 것을 의미하였습니다. document, program code, configuration file. e-mail, 그리고 당신이 생성하고 설정한 대부분들은 text file로 구성되어 있습니다. 이러한 file을 다루기 위해 초기 개발자들은 많은 text 처리 도구를 만들었습니다.

text처리를 위한 graphical tool이 있음에도 불구하고, 많은 익숙한 linux user들은 command line tool을 보다 효과적이고 편리하게 사용하고  있습니다. vi(vim), Emacs, JOE, nano 그리고 Pico등의 text 편집기들은 대부분 linux 배포판에서 사용가능합니다. grep, sed, 그리고 awk 같은 명령은 text file내의 정보 조각의 검색과 변경을 하는데 사용됩니다.

이제 ubuntu에서 text file을 다루는 주요 명령의 사용법을 확인해 봅니다. 그리고 덜 사용되는 것도 같이 탐구해 봅니다.


regular expression으로 matching 하기

text를 처리하는 많은 tool들은 regex라 불리는 regular expression을 사용할 수 있으며, 몇몇 pattern을 기반으로 하여 찾고자 하는 text를 찾아줍니다. text editor 내에서 text를 찾는데 사용되는 string을 사용할 수 있으며, 또한 원하는 string을 많은 file들을 대상으로 찾는데 사용되기도 합니다.

regex는 text의 특정 string(예를들어, linux라는 단어)을 포함하거나 위치(line의 끝 혹은 단어의 시작)에 부합하는 pattern으로 검색을 합니다.

아래는 기본적인 regex을 사용하는 예를 보여줍니다.
  • a* : a, ab, abc, aecjejich
  • ^a : a로 시작하는 line
  • *a$ : a로 끝나는 line
  • a.c : a로 시작해서 c로 끝나는 3글자 문자열
  • [bcf]at : bat, cat, fat
  • [a-d]at : aat, bat, cat, dat, 그러나 Aat, Bat 등은 제외
  • [A-D]at : Aat, Bat, Cat, Dat, 그러나 aat, bat 등은 제외
  • 1[3-5]7 : 136,147, 157
  • \tHello : tab 문자 뒤의 Hello
  • \.[tT][xX][Tt] : .txt, .TXT, .TxT, ...