리눅스에서 sort 명령어는 파일/데이터를 정렬해주는 기능이 있다.
sort [옵션] [파일]--------- 옵션 list --------- -r: 내림차순 정렬 -n : 숫자 정렬 -f : 대소문자를 구분하지 않고 정렬 -u : 중복된 라인 제거 후 유니크한 값만을 추출하여 정렬 -k[key] : 특정 열을 기준으로 정렬 (기본적으로 열의 구분자는 공백/탭) -t[delimiter] : 필드의 구분자를 지정하여 정렬# sort명령어 단독 사용 (각 라인의 첫 문자를 기준으로 정렬) sort file.txt # 파일의 3열(column)을 기준으로 정렬 sort -k 3 file.txt # 특정 구문자를 기준으로 열을 나눈 후 정렬 sort -t ',' -k 2 file.txt # 쉼표','를 기준으로 열을 나눈 후 2번 열을 기준으로 정렬
리눅스에서 uniq 명령어는 파일/데이터 내 중복된 라인들 제거하는 기능이 있다.
uniq [옵션] [입력파일] [출력파일]--------- 옵션 list --------- -u : 중복되지 않는 라인만 출력 -d : 중복되는 라인만 출력 -c : 중복라인 제거 후 중복 빈도까지 출력 -i : 대소문자 구분하지 않고 중복 제거 -f [n] : 첫 번째 n필드를 제외하고 중복 제거 -s [n] : 첫 번째 n문자를 제외하고 중복 제거 -w [n] : 각 라인의 n문자까지만 비교하여 중복 제거# uniq명령어 단독 사용 (각 라인의 위/아래 라인만을 확인하여 중복 삭제) uniq file.txt uniq file.txt return.txt # 중복 제거 결과를 return.txt 파일에 저장
리눅스에서 sed 명령어는 스트림 편집기로 사용된다. 주로 텍스트 파일의 문자를 치환, 삭제, 삽입할 때 사용된다.
sed [옵션] '명령' [출력파일]--------- 옵션 list --------- -i : 파일을 직접 수정 (편집된 파일 저장) -n : 출력을 억제하고, p명령을 사용하여 편집된 라인만 출력 -e : 여러 sed 명령을 한 번에 사용할 때 사용# 특정 문자를 치환 (각 라인의 첫 번째 문자만 치환) sed 's/kim/park' file.txt # 각 라인의 첫 번째 "kim" 문자가 "park"으로 변경 # 모든 특정 문자를 치환 (모든 라인의 문자를 치환) sed 's/kim/park/g' file.txt # 모든 라인의 "kim" 문자가 "park"으로 변경 # 특정 문자가 들어간 라인 삭제 sed '/kim/d' file.txt # "kim"이 들어간 라인 삭제 # 특정 범위 삭제 sed '2,5 d' file.txt # 2~5 라인 삭제 # 특정 라인을 기준으로 라인 append(추가) # "my name is kim" 문장 바로 아래 라인에 "Im an office worker." 문장 삽입 sed '/my name is kim/a Im an office worker.' file.txt # 특정 라인을 기준으로 라인 insert(추가) # "Im an office worker." 문장 바로 위 라인에 "i my name is kim" 문장 삽입 sed '/Im an office worker./i my name is kim' file.txt # -i 옵션을 사용하여 별도의 출력 없이 편집된 내용 즉각 저장 sed -i 's/kim/park/g' file.txt # -n 옵션과 p 명령을 사용하여 변경되는 라인만 출력 sed -n 's/kim/park/g p' file.txt # 모든 라인중 "kim"에서 "park"으로 바뀐 라인만 출력 # -e옵션을 사용하여 두 가지 내용을 편집 # 모든 라인에서 "kim"문자를 "park"으로 변경, "To be deleted"가 들어간 모든 라인 삭제 sed -e 's/kim/park/g' -e '/To be deleted/d' file.txt # I 명령을 사용하여 대소문자 구별 없이 편집 sed 's/HELLO/hi/Ig' file.txt
리눅스에서 awk 명령어는 열(column) 기반 파일의 패턴 검색, 데이터 추출/요약에 사용된다.
awk [옵션] '패턴/조건 {동작}' [입력 파일]--------- 옵션 list --------- -F : 필드 구분자 지정 # 텍스트 파일의 기본 구분자는 공백(띄어쓰기) or 탭 -v : 변수 지정# 특정 열(column) 만 조회 awk '{print $1, $5}' file.txt # 첫 번째 열과 다섯 번째 열 만 출력 awk '{print $1 $5}' file.txt # 첫 번째 열과 다섯 번째 열이 합쳐서 출력 # 특정 열의 합, 평균 조회 (특정 열의 데이터가 숫자일 때만 가능) awk '{sum += $3; count++} END {print "SUM: ", sum, "\nAVG: " sum/count}' file.txt # 특정 조건에 해당하는 데이터만 조회 # 세 번째 열 값이 100 이상인 경우 모든 열($0) 출력 awk '$3 >= 100 {print $0}' file.txt # 특정 문자(또는 숫자) 포함 여부 확인 # 모든 열 중에서 apple이 들어간 행을 찾아서 해당 행의 첫 번째 열 만 출력 awk '/apple/ {print $1}' file.txt # -F 옵션을 사용하여 구분자 정의 # 파일의 구분자를 쉼표(',')로 정의 후 열 출력 awk -F ',' '{print $2}' file.csv # 쉼표 기준 2번째 열 출력 # -v 옵션을 사용하여 외부 변수 사용 # 외부 변수 초기화 out_var=100 # 패턴, 동작에서 사용할 변수 "var" 정의 후 사용 awk -v var="$out_var" '$3 >= var {print $0}' file.txt