01 반복 제어문
02 sed - 비대화형 편집기
03 awk - 자료처리
-01 산술연산
-02 grep
-03 cut
01 반복 제어문
- continue
특정 조건을 만나면 반복문 스킵, 다음 대상부터 다시 반복문을 수행한다.
ex)
for fname in $(ls *.sh)
do
if [ $fname = "a.sh" ]
then
exit 1
echo "$fname"
done
echo "프로그램 종료"
exit 0
vi 22_continue.sh
#!/bin/sh
for i in $(seq 1 10)
do
echo "숫자 출력"
if [ $i -eq 5 ]
then
continue
fi
echo "현재번호 : $i"
done
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sh 22_continue.sh
숫자 출력
현재번호 : 1
숫자 출력
현재번호 : 2
숫자 출력
현재번호 : 3
숫자 출력
현재번호 : 4
숫자 출력
숫자 출력
현재번호 : 6
숫자 출력
현재번호 : 7
숫자 출력
현재번호 : 8
숫자 출력
현재번호 : 9
숫자 출력
현재번호 : 10
break 실습으로 변경해보았다.
#!/bin/sh
for i in $(seq 1 10)
do
echo "숫자 출력"
if [ $i -eq 5 ]
then
break
fi
echo "현재번호 : $i"
done
echo "프로그램 종료"
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sh 22_continue.sh
숫자 출력
현재번호 : 1
숫자 출력
현재번호 : 2
숫자 출력
현재번호 : 3
숫자 출력
현재번호 : 4
숫자 출력
프로그램 종료
vi 23_menu.sh
#!/bin/sh
# env
dir=/home/itwill/linux_ex/ch8
todate=`date +%Y%m%d`
# function def
f_menu() {
echo "메뉴를 입력하세요(p:prior, q:quit) ☞ \c"
read ans2
case $ans2 in
p|P)
echo "이전 메뉴로 돌아가겠습니다\c"
for i in . . .
do
echo "$i\c"
sleep 1
done
contitue
;;
q|Q)
echo "프로그램을 종료하겠습니다\c"
for i in . . .
do
echo "$i\c"
sleep 1
done
break
;;
*)
echo "잘못 입력되었습니다. 프로그램을 종료합니다."
exit 1
;;
esac
}
f_wait() {
for i in . . .
do
echo "$i\c"
sleep 1
done
echo
}
# main shell
clear
while [ 1 ]
do
clear
echo "┌─────────────────────────┐"
echo "│ 관리자 화면 │"
echo "└─────────────────────────┘"
echo "┌─────────────────────────┐"
echo "│ 1. 유저 확인 │"
echo "│ 2. 파일 확인 │"
echo "└─────────────────────────┘"
echo
echo "메뉴를 입력하세요(q:quit) ☞ \c"
read ans
case $ans in
1)
echo "유저 확인 화면으로 전환됩니다\c"
f_wait # 대기 프롬프트 출력
clear
echo "┌─────────────────────────┐"
echo "│ 유저 확인 │"
echo "└─────────────────────────┘"
echo
echo "유저명을 입력하세요 ☞ \c"
read username
if grep -w ^$username /etc/passwd > /dev/null
then
hdir=`grep -w ^$username /etc/passwd | cut -d: -f6`
shell=`grep -w ^$username /etc/passwd | cut -d: -f7`
echo
echo "〓〓〓〓〓〓 결과 〓〓〓〓〓〓"
echo
echo "사용자명 : $username"
echo "홈디렉토리 : $hdir"
echo "로긴쉘 : $shell"
echo
echo "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓"
echo
f_menu # 이전으로 돌아가기, 프로그램 종료 메뉴 출력
else
echo "$username 유저가 존재하지 않습니다."
exit 1
fi
;;
2)
echo "파일 확인 화면으로 전환됩니다\c"
f_wait # 대기 프롬프트 출력
clear
echo "┌─────────────────────────┐"
echo "│ 파일 확인 │"
echo "└─────────────────────────┘"
echo
echo "파일명을 입력하세요 ☞ \c "
read fname
if [ -f $fname ]
then
fsize=`ls -l $fname | cut -d" " -f5`
fown=`ls -l $fname | cut -d" " -f3`
echo
echo "〓〓〓〓〓〓 결과 〓〓〓〓〓〓"
echo
echo "파일명 : $fname"
echo "소유자 : $fown"
echo "크기 : $fsize"
echo
echo "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓"
echo
f_menu
else
echo "$fname 파일이 존재하지 않습니다."
fi
;;
q|Q)
echo "프로그램을 종료하겠습니다\c"
f_wait
break
;;
*)
echo "잘못된 입력입니다."
echo "프로그램을 종료하겠습니다\c"
f_wait
exit 1
;;
esac
done
echo "프로그램 정상 종료"
┌─────────────────────────┐
│ 관리자 화면 │
└─────────────────────────┘
┌─────────────────────────┐
│ 1. 유저 확인 │
│ 2. 파일 확인 │
└─────────────────────────┘
메뉴를 입력하세요(q:quit) ☞ 2
┌─────────────────────────┐
│ 파일 확인 │
└─────────────────────────┘
파일명을 입력하세요 ☞ /home/itwill/linux_ex/ch9/23_menu.sh
〓〓〓〓〓〓 결과 〓〓〓〓〓〓
파일명 : /home/itwill/linux_ex/ch9/23_menu.sh
소유자 : itwill
크기 : 3696
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
메뉴를 입력하세요(p:prior, q:quit) ☞
02 sed - 비대화형 편집기
동시에 여러 파일을 vi 편집기 없이 수정이 가능한 기능이다.
명령어로 파일 편집이 가능하다 (글자입력, 행 삭제, 글자 치환 등)
* 사용법
sed [옵션] '명령어' 파일명
* 명령어
읽기(r)
출력(p)
삭제(d)
입력(i,a)
치환(s)
* 옵션
-n : 원하는 라인만 출력
-e : 다중편집
ex)
d)
set '5d' test.txt -> 5번행 삭제
sed '1,5d' test.txt -> 1~5행 삭제
sed '/root'd' test.txt -> root가 포함된 행 삭제
sed 'root/!d' test.txt -> root가 포함되지 않은 행 삭제
sed '/^#/d' test.txt -> 주석처리된 행 삭제
sed /^$/d' test.txt -> 빈줄 삭제
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ cat -n /etc/passwd | head -10
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ cat -n /etc/passwd | head -10 > test.txt
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed '5d' test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed '1,5d' test.txt
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed '/root/d' test.txt
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
주석처리된 라인도 삭제할 수 있다.
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ cat test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
# 5 sync:x:4:65534:sync:/bin:/bin/sync
# 6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed '/^#/d' test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
ex)
p)
sed '5p' test.txt -> 5번 행이 한 번 더 출력
sed -n '5p' 'test.txt -> 5번행만 출력
sed -n '/root/p/ test.txt -> root 단어가 포함된 라인만 출력
sed -n '/^$/p' test.txt | wc -l -> 빈 줄의 수 출력
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ set '5p' test.txt
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed -n '5p' test.txt
# 5 sync:x:4:65534:sync:/bin:/bin/sync
ex)
s)
sed 's/nologin//' test.txt -> 전체 범위에서 nologin 단어 삭제
sed '2s/nologin//' test.txt -> 2번 행의 nologin 단어 삭제
sed '2,5s/nologin//' test.txt -> 2~5번 행의 nologin 단어 삭제
sed '2,5!s/nologin//' test.txt -> 2~5번 행을 제외한 나머지 행에서 nologin 단어 삭제
sed '3s/bin/BIN/' test.txt -> 2~5번 행을 제외한 나머지 행에서 nologin 단어 삭제
sed '3s/bin/BIN/' test.txt -> 3번행에서 bin을 BIN으로 치환(첫번째 단어만 치환됨)
sed '3s/bin/BIN/g' test.txt -> 3번행에서 bin을 BIN으로 치환(모든 단어가 치환됨)
sed '1,2s/%/#3/' text.txt -> 1~2번행 주척처리
sed '5,6s/^#//' test.txt -> 5~6번행 주석해지
sed '1,3s/^/ /' test.txt -> 1~3번행 두 칸 들여쓰기
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ cat test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
# 5 sync:x:4:65534:sync:/bin:/bin/sync
# 6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed 's/nologin//' test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/
3 bin:x:2:2:bin:/bin:/usr/sbin/
4 sys:x:3:3:sys:/dev:/usr/sbin/
# 5 sync:x:4:65534:sync:/bin:/bin/sync
# 6 games:x:5:60:games:/usr/games:/usr/sbin/
7 man:x:6:12:man:/var/cache/man:/usr/sbin/
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/
9 mail:x:8:8:mail:/var/mail:/usr/sbin/
10 news:x:9:9:news:/var/spool/news:/usr/sbin/
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed '2s/nologin//' test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
# 5 sync:x:4:65534:sync:/bin:/bin/sync
# 6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed '2,5!s/nologin//' test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
# 5 sync:x:4:65534:sync:/bin:/bin/sync
# 6 games:x:5:60:games:/usr/games:/usr/sbin/
7 man:x:6:12:man:/var/cache/man:/usr/sbin/
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/
9 mail:x:8:8:mail:/var/mail:/usr/sbin/
10 news:x:9:9:news:/var/spool/news:/usr/sbin/
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed '3s/bin/BIN/' test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 BIN:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
# 5 sync:x:4:65534:sync:/bin:/bin/sync
# 6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed '3s/bin/BIN/g' test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 BIN:x:2:2:BIN:/BIN:/usr/sBIN/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
# 5 sync:x:4:65534:sync:/bin:/bin/sync
# 6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed '5,6s/^#//' test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed '8,9s/^/ /' test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
# 5 sync:x:4:65534:sync:/bin:/bin/sync
# 6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
ex)
i,a)
sed '5i\==========' test.txt -> 5번 라인에 '=========='를 입력
sed '5a\==========' test.txt -> 5번 라인 밑에 '=========='를 입력
r)
sed '3r file.txt' test.txt -> test.txt 파일 3번행 다음 행에 file.txt 내용을 불러오기
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ echo "abcde......" -> file.txt
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ echo "abcde......" >> file.txt
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ cat file.txt
abcde...... -
abcde......
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed '3r file.txt' test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
abcde...... -
abcde......
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
# 5 sync:x:4:65534:sync:/bin:/bin/sync
# 6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
ex)
e)
sed -e '/^#/d' -e 's/bin//' test.txt ->
sed -e '/^#/d' -e 's'bin''g' test.txt ->
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed '/^#/d' test.txt
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ sed -e '/^#/d' -e 's/bin//' test.txt
1 root:x:0:0:root:/root://bash
2 daemon:x:1:1:daemon:/usr/s:/usr/sbin/nologin
3 :x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/s/nologin
7 man:x:6:12:man:/var/cache/man:/usr/s/nologin
8 lp:x:7:7:lp:/var/spool/lpd:/usr/s/nologin
9 mail:x:8:8:mail:/var/mail:/usr/s/nologin
10 news:x:9:9:news:/var/spool/news:/usr/s/nologin
# 실습하기
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ mkdir data
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ cd data
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9/data$ cp /etc/services services1
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9/data$ cp /etc/services services2
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9/data$ cp /etc/services services3
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9/data$ cp /etc/services services4
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9/data$ cp /etc/services services5
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9/data$ head -10 services1
# Network services, Internet style
#
# Updated from https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml .
#
# New ports will be added on request if they have been officially assigned
# by IANA and used in the real-world or are needed by a debian package.
# If you need a huge list of used numbers please install the nmap package.
tcpmux 1/tcp # TCP port service multiplexer
echo 7/tcp
vi 24_sed.sh
#!/binsh
# data 디렉토리 하위 모든 파일을 1~7행 삭제 후 저장
maindir=/home/itwill/linux_ex/ch9/data
flist=$(find $maindir -maxdepth 1 -type f)
for fname in $flist
do
echo "$fname 파일을 수정하겠습니다."
sed '1,7d $fname > $fname_imsi
mv ${fname}_imsi $fname
done
03 awk - 자료처리
* 사용법
awk [옵션] '[/검색] {명령어}' 파일
-01 산술연산
$ echo | awk '{print 1+2}'
-02 grep
awk /itwill/ /etc/passwd
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ echo | awk '{print 1 + 2}'
3
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ awk /itwill/ /etc/passwd
itwill:x:1000:1000:itwill:/home/itwill:/bin/bash
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ grep itwill /etc/passwd
itwill:x:1000:1000:itwill:/home/itwill:/bin/bash
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ echo abced | cut -c1,3
ac
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9$ echo abcde | cut -c1-3
abc
-03 cut
echo "1:2:3" | awk -F: '{print $1}' -> :으로 필드를 구분하여 첫 번째 필드 출력
echo "1:2:3" | awk -F: '{print $NF}' -> 마지막 필드 출력
echo "1:2:3" | awk -F: '{print $(NF-1)}' -> 마지막 이전 필드 출력
echo "1:2:3" | awk -F: '{print $1"..."$2}' -> print로 위치변수와 일반문자열을 함께 출력할 수 있음 (""로 일반 문자열을 묶어 전달)
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9/data$ echo "1:2:3" | awk -F: '{print $1}'
1
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9/data$ echo "1:2:3" | awk -F: '{print $NF}'
3
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9/data$ echo "1:2:3" | awk -F: '{print $(NF-1)}'
2
** 참고 : 외부 변수 값 전달
username=itwill
awk -F: '/$username/ {print $NF}' /etc/passwd -> 아무것도 출력되지 않는다. (홑따옴표 안의 $는 변수호출로 해석이 불가능)
awk -F: '/'$username'/ {print $NF}' /etc/passwd -> 정상출력
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9/data$ awk -F: '/itwill/ {print $NF}' /etc/passwd
/bin/bash
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9/data$ username=itwill
itwill@itwill-VMware-Virtual-Platform:~/linux_ex/ch9/data$ awk -F: '/$username/ {print $NF}' /etc/passwd
'아이티윌_데이터 분석 55기 > 강의내용_Linux' 카테고리의 다른 글
| #6 6일차_파이썬 스크립트 실행, 로깅 처리, 정렬, 특수기호 정의 (1) | 2026.07.22 |
|---|---|
| #5 5일차_반복문, 산술연산, 색 변수 설정, 지역변수/전역변수, 아나콘다 설치 (0) | 2026.07.21 |
| #4 4일차_서버 이식, if/case, windcp, 유저생성/소유자 변경, find, 리다이렉션, crontab (0) | 2026.07.20 |
| #3 환경설정 및 변수선언, 권한설정, 조건문 (0) | 2026.07.16 |
| #2 2일차_편집기 및 디렉토리 / 파일 확인하기 / 패턴 검색 / 파이프 (0) | 2026.07.15 |