리눅스 - Core Functions3

코린이·2024년 11월 16일

Linux

목록 보기
11/27

📌 sort

리눅스에서 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 명령어는 파일/데이터 내 중복된 라인들 제거하는 기능이 있다.

  • 주로 정렬된 데이터를 다룰 때 사용된다.
  • sort 명령어와 같이 자주 사용된다.
  • 특정 라인의 인접한 중복값만을 제거한다. (특정 라인의 위/아래 라인만 확인하여 중복 삭제)
  • 중복값이 제거된 파일/데이터를 하나의 출력파일로 만들 수 있다.
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 명령어는 스트림 편집기로 사용된다. 주로 텍스트 파일의 문자를 치환, 삭제, 삽입할 때 사용된다.

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

리눅스에서 awk 명령어는 열(column) 기반 파일의 패턴 검색, 데이터 추출/요약에 사용된다.

  • sed는 파일의 전체 텍스트에 초점을 둔 명령어다.
  • awk는 엑셀 파일, CSV 파일 처럼 열 기반 파일에 초점을 둔 명령어다.
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

0개의 댓글