- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- rxswift
- 티스토리챌린지
- deeplearning
- Linux
- scheduledTimer
- 연산자
- Optional
- rest api
- substr
- SWIFT
- 딥러닝
- ios
- 오블완
- r
- Observable
- cocoapods
- SQL
- ReLU
- Python
- sigmoid
- 명령어
- decode
- HTTP
- MVC
- Request
- tapply
- 시각화
- swiftUI
- struct
- barplot
iOS 개발 기록 블로그
linux command : head, tail, grep, awk, sort, uniq, echo 명령어 뿌시기 본문
11. head 명령어
" 문서의 처음 몇줄을 화면에 출력하는 명령어 "
[orcl:~]$ head -[출력 줄 수] [파일명]
예) [orcl:~]$ head -20 winter.txt |
문제 21) 겨울왕국 대본의 100줄까지의 내용을 winter_head.txt라는 이름으로 저장하시오
답)
[orcl:~]$ head -100 winter.txt >> winter_head.txt [orcl:~]$ ls |
결과)
12. tail 명령어
" 문서의 마지막 몇 줄을 화면에 출력하는 명령어 "
예) [orcl:~]$ tail -10 winter.txt |
-f 옵션 : tail의 중요한 옵션으로 문서의 끝에 추가되는 새로운 내용을 실시간으로 확인할 수 있는 옵션
예) 오라클 db가 올라가거나 내려갈때의 그 정보를 적는 파일을 tail -f로 여시오
1. 디렉토리 이동 [orcl:~]$ cd /u01/app/oracle/diag/rdbms/orcl/orcl/trace 2. 아래 사진에서 1.Linux를 오른쪽 클릭해서 세션복제 한다 3. 원래 세션에서 [orcl:trace]$ ls -l alert* [orcl:trace]$ tail -f alert_orcl.log 4. 새로 연 창에서 [orcl:~]$ sqlplus / as sysdba SQL> shutdown immediate 5. 원래 세션을 보면 실시간으로 계속 바뀌는 것을 볼 수 있다 6. 다시 새로 연 세션에서 SQL> startup 7. 원래 세션에서 Ctrl + C 로 종료 시킨다 |
예) 현재 리눅스 시스템의 i/o 성능을 확인하시오 (윈도우의 작업 관리자와 같은 것)
[orcl:~]$ sar 1 100 |
새로 연 세션에서 scott에게 dba 권한을 준다
SQL> grant dba to scott; Grant succeeded. |
그리고 그 세션에서 악성 SQL을 열어본다
SQL> select count(*) from sh.sales, sh.sales; |
그런 다음 원래 세션에 가보면 %user 가 오른 것을 볼 수 있다.
새로운 세션, 원래 세션 모두 Ctrl + C 로 모든 작업을 중지시킨다.
문제 22) redirection을 이용해서 sar 1 100 명령어의 결과가 sar_0622.txt라는 이름으로 저장되게 하시오
답)
[orcl:~]$ sar 1 100 >> sar_0622.txt |
설명)
sar 1 100 : 1초 간 100번 조회하라는 뜻 |
[orcl:~]$ ls
백그라운드로 돌리는 방법
[orcl:~]$ sar 1 100 >> sar_0622.txt & [2] 10074 |
백그라운드로 돌렸던 거 중지시키는 법
13. grep 명령어
" 파일 안에 포함된 특정 단어나 구문을 검색하는 명령어 "
예)
[orcl:~]$ grep -i 'scott' emp.txt 7788 SCOTT ANALYST 7566 19-APR-87 3000 0 20 |
설명)
emp.txt에서 scott이라는 단어가 포함된 라인을 보여달라는 뜻 -i 옵션 : 대소문자를 구분하지 않겠다 |
문제 23) 직업이 salesman인 사원들의 모든 행을 출력하시오
답)
[orcl:~]$ grep -i 'salesman' emp.txt 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 |
문제 24) 직업이 salesman인 사원들의 이름과 월급을 출력하시오
답)
[orcl:~]$ grep -i 'salesman' emp.txt | awk '{print $2, $6}' ALLEN 1600 WARD 1250 MARTIN 1250 TURNER 1500 |
특정 컬럼을 뽑아낼 때 awk를 쓴다.
문제 25) 부서번호가 10번 인 사원들의 이름과 월급을 출력하시오
답)
[orcl:~]$ grep -iw '10' emp.txt 7782 CLARK MANAGER 7839 09-JUN-81 2450 0 10 7839 KING PRESIDENT 0 17-NOV-81 5000 0 10 7934 MILLER CLERK 7782 23-JAN-82 1300 0 10 [orcl:~]$ grep -iw '10' emp.txt | awk '{print $2, $6}' CLARK 2450 KING 5000 MILLER 1300 |
설명)
-w 옵션 : 단어 별 검색 |
14. awk 명령어
" 특정 단어가 들어가 있는 라인에서 특정 컬럼명을 출력하고자 할 때 사용하는 명령어 "
예) [orcl:~]$ awk '$3 == "SALESMAN" {print $2, $3}' emp.txt ALLEN SALESMAN WARD SALESMAN MARTIN SALESMAN TURNER SALESMAN |
문제 26) 월급이 3000 이상인 사원들의 이름과 월급을 출력하시오
답)
[orcl:~]$ awk '$6>=3000 {print $2, $6}' emp.txt SCOTT 3000 KING 5000 FORD 3000 |
리눅스의 연산자 3가지
1. 산술 연산자 : +, -, *, / 2. 비교 연산자 : >, <, >=, <=, ==, != 3. 논리 연산자 : $$, ||, ! |
문제 27) 직업이 salesman이 아닌 사원들의 이름과 직업을 출력하시오
답)
[orcl:~]$ awk '$3!="SALESMAN" {print $2, $3}' emp.txt SMITH CLERK JONES MANAGER BLAKE MANAGER CLARK MANAGER SCOTT ANALYST KING PRESIDENT ADAMS CLERK JAMES CLERK FORD ANALYST MILLER CLERK |
대소문자 구별없이 나오게 하는 방법
[orcl:~]$ awk '$3!=toupper("salesmAN") {print $2, $3}' emp.txt |
문제 28) 직업이 salesman인 사원들의 이름과 월급을 출력하는데 월급이 1500 이상인 사원들만
출력하시오
답)
[orcl:~]$ awk '$3==toupper("salesmAN") && $6>=1500 {print $2, $6}' emp.txt ALLEN 1600 TURNER 1500 |
문제 29) 이름이 A로 시작하는 사원들의 이름과 월급을 출력하시오
힌트)
grep과 정규식(시작: ^, 끝: $)을 사용 awk와 grep과 |를 활용해서 출력 |
답)
[orcl:~]$ awk '{print $2, $6}' emp.txt | grep -i '^A' ALLEN 1600 ADAMS 1100 |
문제 30) 81년도에 입사한 사원들의 이름과 입사일을 출력하시오
답)
[orcl:~]$ awk '{print $2, $5}' emp.txt | grep -i '81' |
결과)
ALLEN 20-FEB-81 WARD 22-FEB-81 JONES 02-APR-81 MARTIN 28-SEP-81 BLAKE 01-MAY-81 CLARK 09-JUN-81 KING 17-NOV-81 TURNER 08-SEP-81 JAMES 03-DEC-81 FORD 03-DEC-81 |
문제 31) 81년도에 입사하지 않은 사원들의 이름과 입사일을 출력하시오
답)
[orcl:~]$ awk '{print $2, $5}' emp.txt | grep -iv '81' = [orcl:~]$ awk '{print $2, $5}' emp.txt | grep -v 81 |
결과)
SMITH 17-DEC-80 SCOTT 19-APR-87 ADAMS 23-MAY-87 MILLER 23-JAN-82 |
설명)
-v 옵션 : 포함되지 않은 것을 검색할 때 사용 |
문제 32) 겨울왕국 대본에서 elsa가 포함되어져 있는 라인들의 개수가 전체 몇 개인지 출력하시오
답)
[orcl:~]$ grep -iw 'elsa' winter.txt | wc -l 318 |
설명)
grep의 옵션 -c : 패턴이 일치하는 행의 수를 출력한다. -i : 비교시 대소문자를 구별하지 않는다. -v : 지정한 패턴과 일치하지 않는 행만 출력한다. -n : 행의 번호를 함께 출력한다. -l : 패턴이 포함된 파일의 이름을 출력한다. -w : 패턴이 전체 단어와 일치하는 행만 출력한다. |
문제 33) R에서 elsa가 포함되어져 있는 라인의 개수를 출력하시오
답)
cafe.daum.net/oracleoracle 카페/생각해야할문제 안에 |
R만 쳐도 R이 실행될 수 있도록 설정하는 방법
[orcl:~]$ cd R-3.2.3 [orcl:R-3.2.3]$ cd bin/ |
어떤 거라도 bin 디렉토리가 있는데 bin 디렉토리에 실행프로그램이 있다
[orcl:bin]$ ./R |
위와 같이 하면 번거롭기 때문에
먼저 /home/oracle/R-3.2.3/ 를 복사해준다.
그리고 다시 cd로 되돌아간다
[orcl:bin]$ cd [orcl:~]$ pwd |
[orcl:~]$ vi .bash_profile |
vi : 파일을 여는 명령어
.bash_profile : oracle 유저로 접속했을때 자동으로 실행되는 파일
위와 같이 뜬다.
위에서 export에 x에 커서를 두고 ESC 키를 누르고 알파벳 o를 누르면 아래에 쓸 수 있게 공간이 생긴다
거기 export PATH=/home/oracle/R-3.2.3/bin:$PATH를 써준다
그리고 ESC키 눌러주고 :wq! 입력하고 엔터
그 다음 배쉬파일을 실행한다
[orcl:~]$ . .bash_profile [orcl:~]$ R |
15. sort 명령어
" 데이터를 특정 컬럼을 기준으로 정렬하는 명령어 "
예)
[orcl:~]$ sort -k 6 emp.txt |
결과)
7369 SMITH CLERK 7902 17-DEC-80 800 0 20 7900 JAMES CLERK 7698 03-DEC-81 950 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 0 20 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7934 MILLER CLERK 7782 23-JAN-82 1300 0 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 0 10 7698 BLAKE MANAGER 7839 01-MAY-81 2850 0 30 7566 JONES MANAGER 7839 02-APR-81 2975 0 20 7788 SCOTT ANALYST 7566 19-APR-87 3000 0 20 7902 FORD ANALYST 7566 03-DEC-81 3000 0 20 7839 KING PRESIDENT 0 17-NOV-81 5000 0 10 |
문제 34) 위의 결과를 다시 출력하는데 이름과 월급만 나오게 하시오
답)
[orcl:~]$ sort -k 6 emp.txt | awk '{print $2, $6}' |
문제 35) 이름과 월급을 출력하는데 월급이 높은 것부터 출력되게 하시오
답)
[orcl:~]$ sort -rk 6 emp.txt | awk '{print $2, $6}' |
결과)
KING 5000 FORD 3000 SCOTT 3000 JONES 2975 BLAKE 2850 CLARK 2450 ALLEN 1600 TURNER 1500 MILLER 1300 MARTIN 1250 WARD 1250 ADAMS 1100 JAMES 950 SMITH 800 |
문제 36) 직업이 salesman인 사원들의 이름과 월급을 출력하는데 월급이 높은 것부터 출력하시오
답)
[orcl:~]$ sort -rk 6 emp.txt | awk '$3 == toupper("salesman") {print $2, $6}' |
결과)
ALLEN 1600 TURNER 1500 MARTIN 1250 WARD 1250 |
문제 37) 사원 테이블의 월급의 토탈 값을 출력하시오
답)
[orcl:~]$ awk '{print $6}' emp.txt | awk '{sum += $1} END {print sum}' 29025 |
설명)
sum += $1 은 sum = sum + $1과 같다 |
문제 38) 직업이 SALESMAN인 사원들의 토탈 월급을 구하시오
답)
[orcl:~]$ awk '$3 == toupper("salesman") {print $3, $6}' emp.txt | awk '{sum += $2} END {print sum}' |
문제 39) 아래와 같이 결과가 출력되게 하시오
보기)
KING의 월급은 5000 ALLEN의 월급은 3000 . . . |
답)
[orcl:~]$ awk '{print $2 "의 월급은 " $6 "입니다"}' emp.txt |
문제 40) 아래와 같이 결과를 출력하시오
보기)
SMITH의 직업은 CLERK입니다 ALLEN의 직업은 SALESMAN입니다 WARD의 직업은 SALESMAN입니다 JONES의 직업은 MANAGER입니다 . . |
답)
[orcl:~]$ awk '{print $2 "의 직업은 " $3 "입니다"}' emp.txt |
문제 41) /home/oracle 에서 ls -lrt라고 조회한 결과를 분석하시오
결과)
설명)
- l : 리스트 - r : reverse - t : 시간 파일 리스트를 보여주는데 오래된 것부터 보여달라 -rw-r--r-- 1 oracle oinstall 1940 Jun 22 11:42 emp50.txt -rw-r--r-- : 권한 1: 링크 oracle : 소유자 oinstall : 그룹 1940 : 파일크기 Jun 22 11:42 : 최종 변경시간 emp50.txt : 파일명 |
문제 42) ls -lrt *.txt 했을 때 파일 크기에 해당하는 부분만 출력하시오
결과)
105 970 970 0 0 0 0 426 1940 114548 3387 9134 |
답)
[orcl:~]$ ls -lrt *.txt | awk '{print $5}' |
문제 43) 위 42번의 결과를 sum해서 출력하시오
답)
[orcl:~]$ ls -lrt *.txt | awk '{sum += $5} END {print sum}' |
결과)
131480 |
문제 44) 아래와 같이 결과가 출력되게 하시오
보기)
현재 디렉토리에 있는 txt 파일들의 총 크기는 131480 바이트 입니다. |
답)
[orcl:~]$ ls -lrt *.txt | awk '{sum += $5} END {print "the size of the total file under the current directory is " sum " byte"}' |
문제 45) 위의 스크립트를 쉘 스크립트로 저장해서 실행되게 하시오
답)
vi size.sh 치면 편집기가 뜬다. 거기서 a를 누르고 위 44번의 답을 붙여넣고 ESC 키 여러 번 누른 다음 : 를 누르고 wq! 를 친다 그리고 sh size.sh 치고 엔터! |
결과)
[orcl:~]$ sh size.sh the size of the total file under the current directory is 131480 bytes. |
16. uniq 명령어
" 중복된 라인을 제거하는 명령어 "
문제 46) emp.txt에서 직업만 출력하시오
답)
[orcl:~]$ awk '{print $3}' emp.txt |
결과)
CLERK SALESMAN SALESMAN . . |
문제 47) 위의 결과를 abcd 순으로 정렬해서 출력하시오
답)
[orcl:~]$ awk '{print $3}' emp.txt | sort |
문제 48) 위의 결과를 중복 제거해서 출력하시오
답)
[orcl:~]$ awk '{print $3}' emp.txt | sort | uniq |
문제 49) 부서번호를 출력하는데 중복 제거해서 출력하시오
답)
[orcl:~]$ awk '{print $8}' emp.txt | sort | uniq |
문제 50) emp.txt를 복사해서 emp7.txt를 생성하고 emp7.txt에 KING에 대한 데이터를 복사해서
맨 아래에 하나를 입력하고 저장하시오
답)
[orcl:~]$ cp emp.txt emp7.txt [orcl:~]$ cat emp7.txt [orcl:~]$ vi emp7.txt King에 커서를 두고 yy를 누른다 (복사) 그 다음 커서를 복사하고 싶은 곳에 두고 (제일 아래) p를 누른 다음 ESC키 여러 번 누르고 :wq! 치고 vi 편집기를 나온다 |
설명)
vi 편집기에서 dd : 한 줄 제거, yy : 복사, p : 붙여넣기, u : 실행취소 |
문제 51) emp7.txt에서 중복된 라인만 출력하시오
결과)
7839 KING PRESIDENT 0 17-NOV-81 5000 0 10 |
답)
[orcl:~]$ sort emp7.txt | uniq -d |
문제 52) emp7.txt에서 중복된 라인을 제거하고 출력하시오
결과)
답)
[orcl:~]$ sort emp7.txt | uniq -u |
17. echo 명령어
" 출력하고자 하는 글자를 출력할 때 사용하는 명령어 "
예)
[orcl:~]$ echo 'i am me'
설명)
echo -e " "
-e 옵션: 역슬래쉬(\)를 이스케이프 문자로서 쓸 수 있게 하는 옵션
예)
$ echo -e "\"삭제하였습니다.\"" "삭제하였습니다." |
문제 52) 직업을 물어보게 하고 직업을 입력하면 해당 직업을 갖는 사원들의 이름과 직업이 출력되게
하시오
답)
$ vi job2.sh a #1/bin/bash echo " " echo -n "직업을 입력하세요 " read job echo " " grep -i $job emp.txt | awk '{print $2, $3}' 저장하고 나와서 $ sh job2.sh |
설명)
#1/bin/bash : 쉘 스크립트 중에 bash 스크립트를 쓰겠다 echo " " : 공백 출력 echo -n "직업을 입력하세요 " : 메시지 출력 후 엔터가 수행된 것 read job : job 이라는 변수에 입력한 직업이 들어간다 |
문제 53) 부서번호를 물어보게 하고 부서번호를 입력하면 해당 부서번호에서 근무하는 사원들의 이름과
월급과 부서번호가 출력되게 하세요
보기)
$ sh deptno2.sh 부서번호를 입력하세요: 10 |
답)
#1/bin/bash echo " " echo -n "부서번호를 입력하세요: " read deptno echo " " awk '{print $2, $6, $8}' emp.txt | grep -w $deptno |
문제 54) 이름을 물어보게 하고 이름을 입력하면 아래와 같이 출력되게 하시오
보기)
vi find_sal.sh 이름을 입력하세요: scott SCOTT의 월급은 3000 입니다. |
답)
#1/bin/bash echo " " echo -n "이름을 입력하세요: " read name echo " " grep -i $name emp.txt | awk '{print $2, "의 월급은 ", $6, "입니다"}' |
문제 55) 직업을 물어보게 하고 직업을 입력하면 아래와 같이 출력되게 하시오
보기)
$ sh job_sumsal.sh 직업을 입력하세요: salesman 토탈 월급은 5600 입니다 |
답)
#1/bin/bash echo " " echo -n "직업을 입력하세요: " read job echo " " grep -i $job emp.txt | awk '{sum += $6} END {print "토탈 월급은 ", sum, " 입니다"}' |
문제 56) 입사일을 출력하는데 뒤에 년도만 잘라서 출력하시오
답)
[orcl:~]$ awk '{print substr($5, 8, 10)}' emp.txt |
문제 57) 년도를 물어보게 하고 년도를 입력하면 해당 년도에 입사한 사원들의 이름과 입사일이
출력되게 하시오
보기)
$ sh year.sh 입사년도를 입력하세요: 81 |
답)
#1/bin/bash echo " " echo -n "입사년도를 입력하세요: " read hiredate echo " " grep -w $hiredate emp.txt | awk '{print $2, $5}' |
문제 58) 연도를 물어보게 하고 년도를 입력하면 해당 년도의 토탈월급이 출력되게 하시오
보기)
$ sh year_sum.sh 년도를 입력하세요: 81 토탈 월급은 10290 입니다. |
답)
#1/bin/bash echo " " echo -n "입사년도를 입력하세요: " read hiredate echo " " grep -w $hiredate emp.txt | awk '{sum += $6} END {print "토탈월급은 ", sum, " 입니다."}' |
'Linux' 카테고리의 다른 글
Linux 디스크 관리, disk management (0) | 2021.12.20 |
---|---|
linux manage permission 권한 관리 (chmod, chattr, chown) (0) | 2021.12.08 |
Linux (리눅스) vi 편집기 명령어 (0) | 2021.11.27 |
linux command : diff, find, tar, in (link), sed, cp, mv 명령어 뿌시기 2탄 (0) | 2021.11.26 |
[리눅스] install linux on windows, 기본 명령어 (0) | 2021.11.06 |