sed
sed - stream editor
sed 는 비 대화형 편집기로서 grep 과 비슷하고, ed 에서 옴
ed 는 대화형 편집기
sed 는 스트리밍 편집기
차이 : 대화형은 입력, 출력이 하나로 이어짐
형식 : sed [옵션] [파일]
s/패턴/새로운 패턴/플래그
root@ysy:~/d80# cp /etc/services h
root@ysy:~/d80# cp /etc/passwd u
root@ysy:~/d80# ls
a.sh func2 func2.sh h u
찾기, 출력
root@ysy:~/d80# sed '/oracle/p' h --> 오라클 패턴 라인은 두 번 출력됨
root@ysy:~/d80# sed -n '/oracle/p' h --> -n : 읽은 것을 출력하지 않음
root@ysy:~/d80# sed '/oracle/d' h --> delete
root@ysy:~/d80# sed 's/ace/ACEACE/g' u --> 치환
root@ysy:~/d80# sed 's/ace/ACEACE/g' u > u2 --> 치환 후 저장
root@ysy:~/d80# sed 's/ace/ACEACE/gw u3' u --> 변경된 라인만 저장
root@ysy:~/d80# sed '/^$/p' h --> 공백 라인만 뽑음
root@ysy:~/d80# cat -n h
root@ysy:~/d80# sed '/^$/d' h | cat -n -> 빈 줄 삭제
sed 플래그
숫자 : 몇 번째로 나타나는 패턴을 새롭게 바꿀지 결정
g : global 모든 패턴 변경
p : print 원본이 출력 되어야 함
d : delete 삭제
s : substitute 치환
w file 명 : 바꾼 결과를 새롭게 저장
sed 플래그
root@ysy:~/d80# sed -e 's/root/ROOT/g' -e 's/ace/ACEACE/g' u
--> u 파일에서 root 문자열을 ROOT로, ace 문자열을 ACEACE로 변경
awk
ㄴ 텍스트 파일에서 행 단위로 작업을 수행하는 유틸리티
리눅스 awk 는 gawk 심볼릭 링크임
awk 는 데이터를 조작하고 리포트를 생성하기 위해 사용함
패턴과 액션이 있음
awk '패턴 {action}' "파일명"
awk -F"[:]" '{print $1, $2, $7}' /etc/passwd
==> 필드를 구분하여 모두 출력
awk -F: '{print $1 " ==> " $7}' /etc/passwd --> 필드를 구분하여 모두 출력
root@ysy:~/d80# cat << END > a1 --> END 가 나오기 전까지의 입력을 a1 으로 저장
> 비빔밥
> 탕수육
> 짜장면
> 햄버거
> 설렁탕
> END
root@ysy:~/d80# nl a1
1 비빔밥
2 탕수육
3 짜장면
4 햄버거
5 설렁탕
root@ysy:~/d80# cat << k > a2
> 6000
> 2000
> 3000
> 4000
> 5000
> k
root@ysy:~/d80# cat << y > a3
> 35
> 21
> 40
> 60
> 75
> y
root@ysy:~/d80# nl a1 a2 a3 --> a1, a2, a3 가 이어서 출력됨
1 비빔밥
2 탕수육
3 짜장면
4 햄버거
5 설렁탕
6 6000
7 2000
8 3000
9 4000
10 5000
11 35
12 21
13 40
14 60
15 75
root@ysy:~/d80# nl a{1,2,3} --> nl a1 a2 a3 와 같은 의미
1 비빔밥
2 탕수육
3 짜장면
4 햄버거
5 설렁탕
6 6000
7 2000
8 3000
9 4000
10 5000
11 35
12 21
13 40
14 60
15 75
root@ysy:~/d80# paste a1 a2 a3 > aa
--> a1, a2, a3 세 개의 파일을 세로 방향으로 이어 붙여서 하나의 파일인 aa를 생성
root@ysy:~/d80# nl aa
1 비빔밥 6000 35
2 탕수육 2000 21
3 짜장면 3000 40
4 햄버거 4000 60
5 설렁탕 5000 75
root@ysy:~/d80# awk '{ print $1, $2, $3 }' aa
--> aa 파일에서 각 라인의 첫 번째, 두 번째, 세 번째 필드를 출력
비빔밥 6000 35
탕수육 2000 21
짜장면 3000 40
햄버거 4000 60
설렁탕 5000 75
root@ysy:~/d80# awk '{ print $0 }' aa --> aa 파일의 각 라인을 모두 그대로 출력
비빔밥 6000 35
탕수육 2000 21
짜장면 3000 40
햄버거 4000 60
설렁탕 5000 75
root@ysy:~/d80# awk '{ print }' aa --> aa 파일의 각 라인을 모두 그대로 출력
비빔밥 6000 35
탕수육 2000 21
짜장면 3000 40
햄버거 4000 60
설렁탕 5000 75
root@ysy:~/d80# awk '{ print NR "\t" $0 }' aa
1 비빔밥 6000 35
2 탕수육 2000 21
3 짜장면 3000 40
4 햄버거 4000 60
5 설렁탕 5000 75
--> aa 파일의 각 라인에 대해 라인 번호와 함께 출력
root@ysy:~/d80# awk '{ print $0 "필드수 ==> " NF }' aa
비빔밥 6000 35필드수 ==> 3
탕수육 2000 21필드수 ==> 3
짜장면 3000 40필드수 ==> 3
햄버거 4000 60필드수 ==> 3
설렁탕 5000 75필드수 ==> 3
--> aa 파일의 각 라인에 대해 라인 내의 필드 수를 함께 출력
root@ysy:~/d80# awk -F '[:\t]' '/비빔밥/{ print NR "\t" $0 }' aa
1 비빔밥 6000 35
--> aa 파일에서 비빔밥이라는 문자열이 포함된 라인에 대해, 라인 번호와 함께 출력
root@ysy:~/d80# awk '/비/' aa
비빔밥 6000 35
root@ysy:~/d80# awk '/탕수육/' aa
탕수육 2000 21
--> aa 파일에서 비라는 문자열을 포함한 모든 라인을 출력
root@ysy:~/d80# awk '$2 >= 4000' aa --> 두번째 세로 라인 값이 4000 이상인 경우 출력
비빔밥 6000 35
햄버거 4000 60
설렁탕 5000 75
root@ysy:~/d80# awk '/[[:digit:]]/' aa --> 숫자가 들었는지?
비빔밥 6000 35
탕수육 2000 21
짜장면 3000 40
햄버거 4000 60
설렁탕 5000 75
root@ysy:~/d80# awk '/[[:upper:]]/' aa --> 대문자가 포함된 라인 찾아 출력
root@ysy:~/d80# awk '/[[:lower:]]/' aa --> 소문자가 포함된 라인 찾아 출력
root@ysy:~/d80# df | awk '$4 > 3000000' --> Avail 값이 3000000 보다 큰 경우 출력
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 12278920 5377624 6255768 47% /
/dev/sda5 5074592 1460 4794604 1% /home
/dev/sda6 10215700 2072 9673112 1% /data
mywin 481352700 477775568 3577132 100% /media/sf_mywin
root@ysy:~/d80# find / -size +300M 2>/dev/null --> size 가 300M 보다 큰 것 출력
/proc/kcore
--> 2>/dev/null : 에러 발생하는 것들 /dev/null 로 보냄
추가 실습 : ssh root login 허용
root@ysy:~# cd /etc/ssh
root@ysy:/etc/ssh# ls
moduli ssh_host_dsa_key ssh_host_ed25519_key.pub
ssh_config ssh_host_dsa_key.pub ssh_host_rsa_key
ssh_config.d ssh_host_ecdsa_key ssh_host_rsa_key.pub
sshd_config ssh_host_ecdsa_key.pub ssh_import_id
sshd_config.d ssh_host_ed25519_key
root@ysy:/etc/ssh# vi sshd_config
root@ysy:/etc/ssh# systemctl restart sshd
root@ysy:/etc/ssh# passwd
New password:
Retype new password:
passwd: password updated successfully
ㄴ root 패스워드 변경
ㄴ 변경해준 root 패스워드로 root 로그인 가능 확인
'네이버클라우드 > Linux' 카테고리의 다른 글
Linux 9일차 (2023-05-04) 네이버클라우드 서버 설정하기 - 환경설정 ( .bash_aliases , .vimrc ) (0) | 2023.05.04 |
---|---|
Linux 9일차 (2023-05-04) 네이버클라우드 서버 설정하기 - 기본 패키지 설치 (0) | 2023.05.04 |
Linux 8일차 (2023-05-03) Shell Script - 실습 (0) | 2023.05.03 |
Linux 8일차 (2023-05-03) Shell Script (0) | 2023.05.03 |
Linux 7일차 (2023-05-02) Linux Network - DataBase server (2) | 2023.05.03 |