- Published on
2025.10.16
[모두의 리눅스] - 12. 텍스트 처리
12.1. wc 명령어: 바이트 수, 단어 수, 행 수 세기
wc는 파일의 행 수, 단어 수, 바이트 수를 출력하는 명령어
| 옵션 | 내용 |
|---|---|
| -l | 행 수 표시 |
| -w | 단어 수 표시 |
| -c | 바이트 수 표시 |
12.2. sort 명령어: 행 단위로 정렬하기
sort는 행 단위로 정렬하여 결과를 출력, 기본값은 알파벳순
-k옵션을 사용하면 특정 항목을 기준으로 정렬할 수 있으며 다음과 같은 특징이 있음.
- ASCII 코드를 기준으로 정렬하므로 소문자가 대문자보다 큰 숫자에 대응.
- 행을 문자열로 인식하고 정렬하므로 1, 10, 2 순으로 정렬됨. -n으로 숫자로 정렬할 수 있음
| 옵션 | 내용 |
|---|---|
| -n | 숫자 값으로 정렬 |
| -r | 역순으로 정렬 |
12.3. uniq 명령어: 중복 제거하기
uniq는 연속된 중복 데이터를 하나만 출력하는 명령어
'연속된' 경우에만 중복을 없애고, 연속되지 않은 중복 데이터는 없애지 않음. 이때는 sort로 정렬 후 uniq를 실행해 전체 중복을 없앨 수 있다. 혹은 -u로도 가능
| 옵션 | 내용 |
|---|---|
| -u | 정렬 후, 중복 행 제거 |
| -c | 중복 데이터 개수 확인 |
12.4. cut 명령어: 입력의 일부 추출하기
cut은 입력의 일부를 추출해 출력하는 명령어
cut -d 구분자 -f 필드번호 파일이름
구분자를 기준으로 데이터를 분할 후, 필드번호로 지정한 필드만 출력
cut -d : -f 3 file.csv라면 :를 기준으로 분할 후 3번째 필드를 출력.cut -d : -f 1,6,7 file.csv와 같이 출력할 필드는 쉼표를 사용해 여러 개를 지정할 수 있음.
12.5. tr 명령어: 문자 교환과 삭제하기
tr은 문자를 치환하는 명령어
tr 문자A 문자B, 문자A를 문자B로 치환한다. 주의할 점은 tr abc ABC라면 abc를 ABC로 바꾼 것이 아니라 a, b, c를 각각 A, B, C로 바꾼 것을 주의해야 함. tr은 문자열이 아니라 문자 단위의 치환 명령어.
-을 사용해 문자 범위를 지정할 수 있음 tr a-z A-Z
파일은 지정할 수 없다.
| 옵션 | 내용 |
|---|---|
| -d | 문자를 제거 |
12.6. tail 명령어: 마지막 부분 출력하기
tail은 파일의 마지막 부분을 출력하며, 옵션을 지정하지 않으면 기본값으로 마지막 10행을 출력.head는 tail과 반대로 동작
| 옵션 | 내용 |
|---|---|
| -n | 출력할 행 수 지정 |
| -f | 실시간 출력, 로그 파일 등에 사용 |
12.7. diff 명령어: 차이 출력하기
diff는 두 파일의 차이를 출력
변경 종류(a, c, d)
| 기호 | 내용 |
|---|---|
| 범위1 a 범위2 | 범위1 뒤에 범위2가 추가 |
| 범위1 c 범위2 | 범위1 부분이 범위2로 변경 |
| 범위1 d 범위2 | 범위1 부분이 삭제 |
| 옵션 | 내용 |
|---|---|
| -u | 통일 포맷 사용 |
통일 포맷은 첫 두 행에 파일 이름과 변경 시각이 표시.
3번째 행부터 차이가 출력되며, +와 -로 추가와 삭제를 표시
통일 포맷은 diff뿐 아니라 깃에서도 사용됨.
파일을 변경한 뒤 전달할 때 파일 전체가 아니라 diff로 출력된 부분만 전달하는 것도 가능함. 변경된 부분을 적용해 변경된 파일을 얻을 수 있고, 이렇게 변경된 내용만 담은 파일을 패치(patch)라 함.