9. 파일 내용 다루기
파일 내용 확인
- 환경 구성
$ cd ~
$ mkdir file
$ cd file
$ seq 1 200 | sed 's/^/line /' > practice.txt
1. cat 명령어
- 파일의 전체 내용을 출력한다.
cat practice.txt
2. less 명령어
- 파일의 내용을 페이지 단위로 출력하며, 스크롤하여 내용을 볼 수 있다.
less는 대용량 파일을 확인할 때 유용하다.
less practice.txt
- 주요 키:
Space: 다음 페이지b: 이전 페이지q: 종료
3. more 명령어
- 파일의 내용을 페이지 단위로 출력하며, 한 번에 한 페이지씩 내용을 볼 수 있다.
more는less보다 간단한 기능을 제공한다.
more practice.txt
- 주요 키:
Space: 다음 페이지Enter: 다음 줄q: 종료
4. head 명령어
- 파일의 처음 몇 줄을 출력한다. 기본적으로 처음 10줄을 출력하지만, 옵션을 사용하여 줄 수를 지정할 수 있다.
head practice.txt
head -n 5 practice.txt
5. tail 명령어
- 파일의 마지막 몇 줄을 출력한다. 기본적으로 마지막 10줄을 출력하지만, 옵션을 사용하여 줄 수를 지정할 수 있다.
tail practice.txt
tail -n 5 practice.txt
실시간 로그 모니터링
tail -f filename: 파일의 마지막 부분을 실시간으로 모니터링하며, 새로운 내용이 추가되면 자동으로 출력한다.
while true; do echo "Log entry $(date)" >> logfile.txt; sleep 1; done & echo $! > mypid.txt
tail -f logfile.txt
kill $(cat mypid.txt)
6. nl 명령어
- 파일의 각 줄에 번호를 붙여서 출력한다.
nl practice.txt
7. wc 명령어
- 파일의 단어, 줄, 바이트, 문자 수를 계산한다.
wc -l: 라인 수wc -w: 단어 수
wc practice.txt
리눅스 파이프라인과 필터
필터
- 환경 구성
cd ~ mkdir filter cd filter cat <<EOL > example.txt apple,fruit,1.00 banana,fruit,0.50 carrot,vegetable,0.30 banana,fruit,0.50 apple,fruit,1.00 eggplant,vegetable,1.20 fig,fruit,2.00 grape,fruit,1.80 banana,fruit,0.50 apple,fruit,1.00 carrot,vegetable,0.30 EOL
주요 필터 명령어
-
grep: 특정 패턴을 검색하고 해당 패턴이 포함된 줄을 출력한다.$ grep "banana" example.txt -
sed: 스트림 에디터로, 텍스트의 변환 및 편집을 수행한다.$ sed 's/fruit/FRUIT/g' example.txt- 이 명령어는
filename파일에서old를new로 바꾸는 작업을 수행한다.
- 이 명령어는
-
awk: 데이터를 필드 단위로 처리하여 패턴 매칭 및 텍스트 변환을 수행한다.$ awk -F, '$2 == "fruit" { print $1 $3 }' example.txt- 이 명령어는
filename파일에서 첫 번째와 세 번째 필드를 출력한다.
- 이 명령어는
-
sort: 텍스트를 정렬한다.$ sort example.txt -
uniq: 중복된 줄을 제거한다. 일반적으로sort와 함께 사용된다. (파이프 라인 활용)$ sort example.txt | uniq -
cut: 특정 필드를 추출한다.$ cut -d, -f1 example.txt- 이 명령어는
filename파일에서 콤마로 구분된 첫 번째 필드를 추출한다.
- 이 명령어는
-
tr: 문자를 변환하거나 삭제한다.$ tr '[:lower:]' '[:upper:]' < example.txt- 이 명령어는
filename파일의 모든 소문자를 대문자로 변환한다.
- 이 명령어는
[실습] 필터 명령어 실습
파이프라인
ls -l | more
파이프 라인과 필터의 조합
파이프라인(pipe):
|기호를 사용하여 여러 명령어를 연결하고, 앞 명령의 출력을 다음 명령의 입력으로 전달하는 기능.- 복잡한 작업을 간결하게 연결해 처리할 수 있다.
파이프라인과 필터 사용 예시 1
-
폴더에서
txt파일을 찾는 명령어$ ls -l | grep ".txt" ls -l: 현재 디렉토리의 파일 목록을 자세히(long listing format) 출력한다.|: 파이프라인 기호로,ls -l명령어의 출력을 다음 명령어인grep의 입력으로 전달한다.grep ".txt": 입력된 데이터에서.txt문자열이 포함된 줄만 출력한다.파이프라인과 필터 사용 예시 2
-
유니크한 데이터의 갯수를 뽑는 명령어
$ cat example.txt | tr '[:lower:]' '[:upper:]' | sort | uniq | wc -l cat file.txt:file.txt파일의 내용을 출력한다.tr '[:lower:]' '[:upper:]': 입력된 텍스트에서 소문자를 대문자로 변환한다.sort: 입력된 텍스트를 정렬한다.uniq: 정렬된 텍스트에서 중복된 줄을 제거한다.wc -l: 라인의 수를 센다파이프라인과 필터 사용 예시 3
-
디스크 사용량 찾기 (
df명령어는 디스크 사용량이 나오는 명령어로 나중에 배운다)$ df -h | grep "/dev/sda1" df -h: 디스크 사용량을 사람이 읽기 쉬운 형식(human-readable)으로 출력한다.grep "/dev/sda1": 특정 디스크 파티션/dev/sda1의 사용량 정보를 필터링하여 출력한다.
[실습] 파이프라인과 필터 실습 - 10분
리다이렉션
- 환경 구성
cd ~ mkdir redirection cd redirection echo -e "banana\napple\ncarrot\nbanana\napple" > unsorted.txt touch existing_file.txt
리다이렉션 종류
- 출력 리다이렉션: 명령어의 출력을 파일로 전송한다.
-
기본 출력 리다이렉션 (
>):$ ls > output.txtls명령어의 출력을output.txt파일로 저장한다. 파일이 이미 존재하면 내용을 덮어쓴다.
-
추가 출력 리다이렉션 (
>>):$ echo "Hello, World!" >> output.txtecho명령어의 출력을output.txt파일의 끝에 추가한다. 파일이 존재하지 않으면 새로 생성한다.
-
-
입력 리다이렉션 (
<): 파일의 내용을 명령어의 입력으로 사용한다.$ sort < unsorted.txtunsorted.txt파일의 내용을sort명령어의 입력으로 사용하여 정렬한다.
- 오류 출력 리다이렉션: 명령어의 오류 출력을 파일로 전송한다.
-
기본 오류 출력 리다이렉션 (
2>):$ ls non_existing_file 2> error.log- 존재하지 않는 파일을 나열하려고 할 때 발생하는 오류 메시지를
error.log파일로 저장한다.
- 존재하지 않는 파일을 나열하려고 할 때 발생하는 오류 메시지를
-
오류 출력 추가 리다이렉션 (
2>>):$ ls non_existing_file 2>> error.log- 오류 메시지를
error.log파일의 끝에 추가한다.
- 오류 메시지를
-
- 출력과 오류를 동시에 리다이렉션:
-
출력과 오류를 같은 파일로 리다이렉션 (
>&):$ ls existing_file.txt non_existing_file > output.log 2>&1- 명령어의 표준 출력과 오류 출력을 모두
output.log파일로 저장한다.
- 명령어의 표준 출력과 오류 출력을 모두
-
출력과 오류를 각각 다른 파일로 리다이렉션:
$ ls existing_file.txt non_existing_file > output.log 2> error.log- 명령어의 표준 출력은
output.log파일로, 오류 출력은error.log파일로 저장한다.
- 명령어의 표준 출력은
-
[실습] 리다이렉션
고급 사용
요약
- 리눅스는 파일의 내용을 다루기 위한 많은 명령어를 제공한다.
cat,less,head,tail,wc,grep,awk등의 명령어는 필수적으로 익혀야 한다.- 파이프라인(
|)과 리다이렉션(>,>>,<,2>)을 통해 복잡한 데이터 흐름을 유연하게 처리할 수 있다. - 실시간 로그 모니터링, 조건 검색, 대량 텍스트 편집 등 실무에도 자주 활용된다.