파일

포스트: 80
Tags

Posts

80 posts

[bash: awk] 출력할 내용을 조건에 따라 여러 파일로 나누어 저장하기

반달가면|2017년 1월 3일

리눅스 shell에서와 유사하게, awk에서 print 명령으로 출력할 내용을 ">" 기호를 사용하면 파일로 저장할 수 있다. 아래의 예시를 보자. 우선 my_data.txt 파일의 내용이 과일의 가격이라고 가정하자. # my_data.txt 파일 내용 확인 cat my_data.txt apple 500 pear 800 orange 500 strawberry 200 이 파일에서 가격이 500원인 항목만 모아서 500.txt 파일에 저장하려면, 아래와 같이 해 볼 수 있다. # my_data.txt에서 가격이 500원인 항목만 500.txt에 저장 awk '/ 500/ { print $0 > "500.txt" }' my_data.txt # 500.txt 파일 내용 확

[bash: while, read, <] 텍스트 파일을 한줄씩 읽어서 작업하기

반달가면|2016년 12월 14일

텍스트 파일을 한줄씩 읽어서 순차적으로 작업을 해야 할 경우, while과 read 명령을 조합하고 I/O 리다이렉션(redirection)으로 파일을 열어 주면 된다. 예시를 보면 금방 감을 잡을 수 있을 것이다. 예를 들어 my_data.txt 파일을 한줄씩 읽어서 행번호와 함께 출력하는 경우를 생각해 보자. 아래와 같은 형태가 될 것이다. # 행번호 초기값 설정 line_num=1 # 파일에 대한 작업 while read -r rline do # 행번호와 read 명령으로 읽은 행 출력 echo "$line_num : $rline" # 행번호 1 증가 ((line_num++)) done < my_data.txt 행번호는 변수 line_num에, 파일로

[bash: grep] 두개의 파일에서 공통으로 출현하는 문자열 찾기

반달가면|2016년 11월 30일

파일 2개를 비교해서 양쪽 파일에 공통적으로 출현하는 문자열을 찾는 방법이다. grep의 -f 옵션을 사용하면 된다. -f 옵션은 검색할 문자열을 파일로부터 한줄씩 읽어들이기 위한 것이다. 예를 들어 a.txt 파일에 있는 문자열 중에 b.txt에도 있는지 알고 싶다면, 아래와 같이 해 볼 수 있다. # a.txt 파일로부터 문자열 패턴을 읽어서 b.txt에서 검색 (-f 옵션) grep -f a.txt b.txt 한가지 생각해 볼 점은, a.txt와 b.txt에 빈 줄이 많이 존재할 경우 이것도 전부 문자열로 간주해서 비교하기 때문에 빈 줄도 일치하는 것으로 결과가 나와서 보기에 지저분할 수 있다. 위의 예시를 좀 더 깔끔하게 작업하려면 a.txt 파일에서 빈 줄을 제거하고 중복되는 문자

tofrodos - 리눅스에서 윈도우용 텍스트 파일과의 줄바꿈 형식 차이 해결하기

반달가면|2016년 11월 13일

리눅스와 윈도우의 텍스트 파일은 줄바꿈 문자가 다르다. 리눅스는 lf(line feed,\n), 윈도우는 crlf(carriage return line feed, \r\n)를 사용한다. 이런 차이 때문에 리눅스에서 만든 텍스트 파일을 윈도우 메모장에서 열어 보면 줄바꿈이 제대로 보이지 않고 이상하게 된다. 리눅스에서 윈도우 텍스트 파일을 다루기 위해 tofrodos 패키지를 설치하면 된다.(데비안/우분투 기준) # tofrodos 패키지 설치 sudo apt-get install tofrodos 설치를 완료하면 fromdos와 todos를 사용할 수 있다. 윈도우쪽에서 가져온 텍스트 파일을 리눅스 형식으로 바꾸고 싶으면 fromdos, 반대로 리눅스에서 만든 텍스트 파일을 윈도우에서 볼 수