리눅스에서 file 명령어는 지정한 파일이나 디렉터리가 어떤 유형인지(종류인지 판별해 주는 명령어
# file [파일명 또는 디렉터리 명]
# file passwd
passwod: ASCII text
//passwd라는 파일은 ASCII 문자로 이루어진 일반 텍스트 파일이라는 뜻
grep은 텍스트 파일에서 특정 문자열이나 패턴을 찾아 출력해주는 명령어
# grep [옵션] '찾을 문자열' [파일명]
# grep 'linux' pse.txt
# grep -n 'linux' pse.txt
cut 명령어는 파일에서 "문자열의 특정 위치(컬럼)"나 구분자를 기준으로 나눈 필드를 추출할 때 사용하는 명령어
# cut [옵션] [설정값] [파일명]
kim,20,서울
lee,20,부산
park,30,대구
# cut -c 1 pse1.txt // 각 줄의 첫번쨰 문자만 출력
//결과
k
l
p
# cut -c 2-3 pse1.txt // 각 줄의 2번째~3번째 문자만 출력
//결과
im
ee
ar
# cut -f 2 pse1.txt
# cut -f 3 -d , pse1.txt //쉼표를 기준으로 나눴을 떄 3번째 필드만 출력
//결과
서울
부산
대구
# cut -f 1,3 -d , pse1.txt // 1번째와 3번째 필드 출력
//결과
kim,서울
lee,부산
park,대구
sed는 Stream EDitor(스트림 편집기)의 약자이며,
파일이나 표준 입력에서 텍스트를 행 단위로 읽어와서 가공하거나 필터링 하는 명령어# sed [옵션] '동작' [파일명]
1. kim,20,서울
2. lee,25,부산
3. park,30,대구
4. choi,22,인천
5. jung,27,광주
6. han,35,대전
7. yoon,28,울산
8. jang,26,세종
# sed -n 5p pse1.txt // 5번째 줄만 출력
//결과
jung,27,광주
# sed -n -e 3p -e 7p pse1.txt //3, 7번째 줄 출력
//결과
park,30,대구
yoon,28,울산
# sed -n -e 2,4p pse1.txt // 2번째 줄부터 4번째 줄까지 출력
//결과
lee,25,부산
park,30,대구
choi,22,인천
sed -n -e '2,$p' pse1.txt // $는 파일의 마지막 줄을 의미. 2번쨰부터 끝까지 출력
//결과
lee,25,부산
park,30,대구
choi,22,인천
jung,27,광주
han,35,대전
yoon,28,울산
jang,26,세종
awk는 행 단위로 파일을 읽어서, 필드를 기준으로 데이터 처리나 조건 검색, 집계 등을 할 수 있는 텍스트 처리용 언어
# awk [옵션] '조건 {처리}' [파일명]
kim,80,서울
lee,60,부산
park,70,대구
choi,90,서울
jung,50,부산
# awk 'NR==5' pse1.txt //NR은 "현재 줄 번호"를 의미, 5번쨰 줄만 출력
//결과
jung,50,부산
# awk 'NR==3 || NR==5' pse1.txt //3번쨰 줄 또는 7번쨰 줄 출력
//결과
park,70,대구
jung,50,부산
# awk 'NR>=3 && NR<=7 pse1.txt //3번째 줄부터 7번쨰 줄까지 출력
//결과
lee,60,부산
park,70,대구
choi,90,서울
jung,50,부산
# awk -F , '{print $1}' pse1.txt //쉼표(,) 기준 필드로 자른 후, 첫번쨰 필드만 출력
//결과
kim
lee
park
choi
jung
# awk -F , '$2 >= 70' pse1.txt // 두번쨰 행이 70 이상인 것만 출력
//결과
kim,80,서울
choi,90,서울
# awk -F , '{print $1 "의 나이: " $2}' pse1.txt //1번째 필드와 2번쨰 필드를 조합하여 출력
//결과
kim의 나이: 80
lee의 나이: 60
park의 나이: 70
choi의 나이: 90
jung의 나이: 50
# awk -F , '{sum += $2} END {print "합계: ", sum, "평균: ", sum/NR}' pse1.txt // 각줄의 2번쨰 필드를 sum에 누적. END{} 블록에서 마지막줄에 도달하면 합계와 평균 출력
//결과
합계: 350 평균: 70
//NR은 총 줄 수를 나타냄
sort는 파일의 내용을 행 단위로 정렬해주는 명령어
기본적으로 사전 순(A~Z) 또는 숫자 순으로 정렬하며, 특정 열(필드)을 기준으로 정렬할 수도 있다.# sort [옵션] -k [열번호] [파일명]
- -k옵션은 "key"의 약자이며, 몇 번쨰 열을 기준으로 정렬할 지 지정
- 구분자는 기본적으로 공백(스페이스/텝) 이지만, -t로 변경 가능
- 파일이 쉼표로 구분 된 경우는 -t ',' 같이 정해야함
kim 80 서울
lee 70 부산
park 90 대구
choi 60 광주
jung 75 울산
# sort -t , -k 1 pse1.txt // 이름 순으로 정렬(첫번째 열, 사전 순)
//결과
choi,60,광주
jung,75,울산
kim,80,서울
lee,70,부산
park,90,대구
# sort -t , -k 2 pse1.txt //점수를 기준으로 정렬(두번쨰 열 기본은 문자열 기준 정렬)
//결과
choi,60,광주
lee,70,부산
jung,75,울산
kim,80,서울
park,90,대구
# sort -t , -k 3 pse1.txt | nl // 도시 이름 기준 정렬 후 줄 번호 붙이기
//결과
1 choi,60,광주
2 park,90,대구
3 lee,70,부산
4 kim,80,서울
5 jung,75,울산
# sort -t , -k 2 -r pse1.txt | nl
//결과
1 park,90,대구
2 kim,80,서울
3 jung,75,울산
4 lee,70,부산
5 choi,60,광주
echo는 터미널에 텍스트나 변수값을 출력하는 명령어
# echo [출력할 내용 또는 환경 변수]
# echo $PWD
//결과
/tmp/practice/korea
# echo $HOSTNAME
# echo $HOME
//결과
/Users/suhyenlee
# echo {A..Z}
//결과
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
# echo {A..Z} | tr -d ' '
//결과
ABCDEFGHIJKLMNOPQRSTUVWXYZ
rm -rf [파일 또는 디렉터리명]
# rm -rf [b-d]* // 이름이 b,c,d로 시작하는 모든 파일/디렉터리 삭제
# rm -rf [bce]* // 이름이 b,c,e로 시작하는 모든 파일/디렉터리 삭제
# rm -rf [^b-d]* // 이름이 b-d 제외한 문자로 시작하는 모든 파일/디렉터리 삭제
# rm -rf [^ace]* // 이름이 a,c,e, 제외한 문자로 시작하는 모든 파일/디렉터리 삭제
# rename [바꿀 패턴] [바꿀 문자열] [파일들]
- 저장한 패턴을 파일 이름에서 찾아서, 새 문자열로 바꿈
# rename file file2 file2
rename f file f*