문자열

포스트: 24
Tags

Posts

24 posts

[bash: awk] 다중 문자열 검색 - 2

반달가면|2017년 1월 5일

예전에 적었던 awk를 이용한 다중 문자열 검색에 대한 보충. 문자열 A와 문자열 B가 모두 포함된 경우(A and B)와 둘 중 하나가 포함된 경우(A or B)에 대하여 아래와 같이 입력하여 검색할 수 있다. 교집합(and)은 "&&", 합집합(or)은 "||" 기호를 사용하면 된다. # my_data.txt에서 A와 B가 모두 포함된 행 출력(A and B) awk '/A/ && /B/' my_data.txt # my_data.txt에서 A 또는 B가 포함된 행 출력(A or B) awk '/A/ || /B/' my_data.txt 위와 같은 형식을 이용해서 좀 더 복잡한 검색을 해 볼 수 있다. 예를 들어 첫번째 항목(field)에 A가 포함되어

[bash: sed] 텍스트 파일의 문자열 수정/변경

반달가면|2017년 1월 4일

sed에서 -i 옵션을 추가하면 작업한 내용이 텍스트 파일에 반영되어 저장된다. 우선 간단한 예시를 보자. my_data.txt 파일에서 문자열 "abc"를 "123"으로 대체하는 경우다. -i 옵션이 없으면 대체된 내용이 화면으로 출력된다. # 파일 내용 확인 cat my_data.txt abc def abc 111 # "abc"를 "123"으로 대체 sed 's/abc/123/' my_data.txt 123 def 123 111 # 대체한 결과를 my_data.proc.txt에 저장 (I/O 리다이렉션) sed 's/abc/123/' my_data.txt > my_data.proc.txt -i 옵션을 추가하면 결과를 화면에 출력하는 대신 해당 파일을 변경하여

[bash:uniq, sort] 한글 문자열에 대한 중복 제거 문제

반달가면|2016년 12월 29일

같은 문자열의 행이 연속될 경우 중복을 제거하거나 중복되는 회수를 확인하기 위해 uniq 명령을 종종 사용하게 된다(uniq의 기본적인 활용에 대한 내용은 이전 게시물을 참고하자. 여기로). 매우 요긴한 기능을 제공하지만, 한글에서는 문제가 발생할 수 있다는 사실을 최근에 발견. 아래의 예시를 보자. 글자수가 같으면 동일한 문자열로 간주하는 것처럼 보인다. # my_data.txt 파일 내용 확인 cat my_data.txt 나비 강아지 메뚜기 메뚜기 # 중복 제거 uniq my_data.txt 나비 강아지 위의 예시에서 "강아지"와 "메뚜기"는 다른 단어임에도 불구하고 uniq에서는 "메뚜기"가 제거되었다. 인터넷을 좀 찾아보니, 지역정보(locale)와 관계가 있는 것

[bash: awk] 특정 위치(field)의 문자열에서 특정 길이 만큼 문자열 추출

반달가면|2016년 12월 16일

awk에서도 expr의 substr 옵션과 같은 기능을 하는 함수가 존재한다. 이름도 substr로 같다. (expr의 substr 옵션에 대한 내용은 이전 게시물을 참고하자. 여기로) substr 함수의 형식은 아래와 같다. 아래의 형식에서 문자열이 들어갈 자리에 $1, $2 등 위치(field) 변수를 지정해 주면 된다. substr("문자열",[시작 위치],[길이]) 간단한 예시를 보자. 문자열 "I'm a student"에서 세번째 단어(student)의 2번째 바이트부터 4바이트를 추출하고자 한다면 아래와 같이 될 것이다. substr 함수를 이용해서 3번째 단어의 2번째 바이트부터 4바이트를 추출하여 변수 result에 저장하고 print 명령으로 출력. echo "I'm a