안녕하세요 가야태자 @talkit 입니다.
오늘은 리눅스에서 파일 내용에 내가 원하는 내용이 있는지 찾아 보는 방법을 알려 드리겠습니다.
grep은 또 조합을 해서도 많이 사용 합니다.
오늘은 grep 명령어 만으로 이야기 하는 것과 조합에 대한 맞배기를 좀 보여 드리겠습니다.
우선 조합을 해보려면, 파일이 좀 필요 합니다.
2022-12-01, 경기도, 1
2022-12-01, 강원도, 2
2022-12-01, 경상남도, 3
2022-12-01, 경상북도, 4
2022-12-01, 전라남도, 5
2022-12-01, 전라북도, 6
2022-12-01, 충청남도, 6
2022-12-01, 충청북도, 7
2022-12-02, 경기도, 2
2022-12-02, 강원도, 3
2022-12-02, 경상남도, 4
2022-12-02, 경상북도, 5
2022-12-02, 전라남도, 6
2022-12-02, 전라북도, 7
2022-12-02, 충청남도, 8
2022-12-02, 충청북도, 9
2022-12-03, 경기도, 3
2022-12-03, 강원도, 4
2022-12-03, 경상남도, 5
2022-12-03, 경상북도, 6
2022-12-03, 전라남도, 7
2022-12-03, 전라북도, 8
2022-12-03, 충청남도, 9
2022-12-03, 충청북도, 10
2022-12-04, 경기도, 4
2022-12-04, 강원도, 5
2022-12-04, 경상남도, 6
2022-12-04, 경상북도, 7
2022-12-04, 전라남도, 8
2022-12-04, 전라북도, 9
2022-12-04, 충청남도, 10
2022-12-04, 충청북도, 11
2022-12-05, 경기도, 5
2022-12-05, 강원도, 6
2022-12-05, 경상남도, 7
2022-12-05, 경상북도, 8
2022-12-05, 전라남도, 9
2022-12-05, 전라북도, 10
2022-12-05, 충청남도, 11
2022-12-05, 충청북도, 12
2022-12-06, 경기도, 6
2022-12-06, 강원도, 7
2022-12-06, 경상남도, 8
2022-12-06, 경상북도, 9
2022-12-06, 전라남도, 10
2022-12-06, 전라북도, 11
2022-12-06, 충청남도, 12
2022-12-06, 충청북도, 13
2022-12-07, 경기도, 7
2022-12-07, 강원도, 8
2022-12-07, 경상남도, 9
2022-12-07, 경상북도, 10
2022-12-07, 전라남도, 11
2022-12-07, 전라북도, 12
2022-12-07, 충청남도, 13
2022-12-07, 충청북도, 14
2022-12-08, 경기도, 8
2022-12-08, 강원도, 9
2022-12-08, 경상남도, 10
2022-12-08, 경상북도, 11
2022-12-08, 전라남도, 12
2022-12-08, 전라북도, 13
2022-12-08, 충청남도, 14
2022-12-08, 충청북도, 15
2022-12-09, 경기도, 9
2022-12-09, 강원도, 10
2022-12-09, 경상남도, 11
2022-12-09, 경상북도, 12
2022-12-09, 전라남도, 13
2022-12-09, 전라북도, 14
2022-12-09, 충청남도, 15
2022-12-09, 충청북도, 16
2022-12-10, 경기도, 10
2022-12-10, 강원도, 11
2022-12-10, 경상남도, 12
2022-12-10, 경상북도, 13
2022-12-10, 전라남도, 14
2022-12-10, 전라북도, 15
2022-12-10, 충청남도, 16
2022-12-10, 충청북도, 17
위와 같은 파일이 있다고 생가갛겠습니다.
그런데 생각만 하면 자료를 못 만드니 따라하시면 파일이 생깁니다. ^^
vi temp.txt
리눅스에서 위와 같이 치십시오
vi 따로 글을 몇개 적어 보겠습니다.
오늘은 따라 하시면 됩니다.
리눅스에서 위 명령어를 입력 합니다.
그러면 위에서 보이는 것처럼 vi 가 열립니다. 파일이 동일한 파일명으로 존재하면 파일의 내용이 나오겠지만, 우리는 새로운 파일을 만든다고 가정하므로, 저 그림과 비슷해야 합니다.
그럼 저기서 영어 자판의 소문자 "i"를 타이핑 합니다.
그러면, 아래에 INSERT 라고 나올 겁니다.
vi가 입력모드로 변경 된 것입니다.
앞의 네모에서 복사를 하셨다면, PuTTY를 사용하신다는 전제 하에서 오른쪽 마우스를 클릭 합니다.
요렇게 나올 겁니다.
저기서 입력모드를 빠져 나와합니다. 키보드의 "Esc" 키를 타이핑 하십시오.
위와 같이 됩니다.
여기서 :wq 를 순서대로 입력하고 엔터를 칩니다.
그림과 같이 타이핑이 쳐질것이고, 저기서 엔터만 누르시면 됩니다.
ls -al
total 84
drwxr-x--- 4 ubuntu ubuntu 4096 Dec 25 11:41 .
drwxr-xr-x 4 root root 4096 Dec 19 13:19 ..
-rw------- 1 ubuntu ubuntu 1046 Dec 24 15:28 .bash_history
-rw-r--r-- 1 ubuntu ubuntu 220 Jan 6 2022 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3771 Jan 6 2022 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Dec 19 14:28 .cache
-rw------- 1 ubuntu ubuntu 20 Dec 25 11:34 .lesshst
-rw-r--r-- 1 ubuntu ubuntu 807 Jan 6 2022 .profile
drwx------ 2 ubuntu ubuntu 4096 Dec 19 13:19 .ssh
-rw------- 1 ubuntu ubuntu 2986 Dec 25 11:41 .viminfo
-rw-rw-r-- 1 ubuntu ubuntu 54 Dec 24 11:25 hello.txt
-rw-rw-r-- 1 ubuntu ubuntu 18 Dec 24 11:16 hello1.txt
-rw-rw-r-- 1 ubuntu ubuntu 18 Dec 24 11:16 hello2.txt
-rw-rw-r-- 1 ubuntu ubuntu 18 Dec 24 11:16 hello3.txt
-rw-rw-r-- 1 ubuntu ubuntu 2216 Dec 25 11:41 temp.txt
-rw-rw-r-- 1 ubuntu ubuntu 1099 Dec 24 01:06 test.txt
-rw-rw-r-- 1 ubuntu ubuntu 2006 Dec 24 01:13 test2.txt
-rw-rw-r-- 1 ubuntu ubuntu 2006 Dec 24 01:13 text.txt
-rw-rw-r-- 1 ubuntu ubuntu 12 Dec 24 11:16 yellow1.txt
-rw-rw-r-- 1 ubuntu ubuntu 12 Dec 24 11:16 yellow2.txt
-rw-rw-r-- 1 ubuntu ubuntu 12 Dec 24 11:16 yellow3.txt
파일을 찾아보면 저기 temp.txt가 보입니다. ^^
그러면 이제 grep을 이용해서 몇가지 일을 해보겠습니다.
오늘은 가장 간단하게 할 것이므로 다음과 같이 입력해 보십시오.
grep "경상남도" *
위와 같이 입력 합니다.
grep "경상남도" *
temp.txt:2022-12-01, 경상남도, 3
temp.txt:2022-12-02, 경상남도, 4
temp.txt:2022-12-03, 경상남도, 5
temp.txt:2022-12-04, 경상남도, 6
temp.txt:2022-12-05, 경상남도, 7
temp.txt:2022-12-06, 경상남도, 8
temp.txt:2022-12-07, 경상남도, 9
temp.txt:2022-12-08, 경상남도, 10
temp.txt:2022-12-09, 경상남도, 11
위와 같이 나옵니다. ^^
어느파일에 temp.txt에 우리 원하는 경상남도가 들어 있다네요.^^
리눅스에 표출 입출력에 대해서 좀 더 설명을 해야겠지만
위 명령어로 경상남도.txt를 만들어 보겠습니다.
grep "경상남도" * > 경상남도.txt
실제로 실행을 하고 저희가 cat에서 배워던 내용까지 한번 해서 다시 출력을 해보겠습니다.
grep "경상남도" * > 경상남도.txt
ubuntu@instance:~$ cat 경상남도.txt
temp.txt:2022-12-01, 경상남도, 3
temp.txt:2022-12-02, 경상남도, 4
temp.txt:2022-12-03, 경상남도, 5
temp.txt:2022-12-04, 경상남도, 6
temp.txt:2022-12-05, 경상남도, 7
temp.txt:2022-12-06, 경상남도, 8
temp.txt:2022-12-07, 경상남도, 9
temp.txt:2022-12-08, 경상남도, 10
temp.txt:2022-12-09, 경상남도, 11
temp.txt:2022-12-10, 경상남도, 12
파일에 위와 같이 나옵니다.
조금 마음에 안드는 것이 ^^ 저 앞에 파일 이름을 출력한게 마음에 안듭니다.
그래서 grep의 옵션을 사용해서 파일 이름을 지워 버리겠습니다. ^^
grep -h "경상남도" temp.txt > 경상남도.txt
-h가 no-file-name 이라고 되어 있습니다. ^^
지금 현재 경상남도 파일이 생겨서 * 파일로 하면 파일명이 있는게 나오므로, temp.txt 만 찍어서 했습니다.
grep -h "경상남도" temp.txt > 경상남도.txt
ubuntu@instance-:~$ cat 경상남도.txt
2022-12-01, 경상남도, 3
2022-12-02, 경상남도, 4
2022-12-03, 경상남도, 5
2022-12-04, 경상남도, 6
2022-12-05, 경상남도, 7
2022-12-06, 경상남도, 8
2022-12-07, 경상남도, 9
2022-12-08, 경상남도, 10
2022-12-09, 경상남도, 11
결과는 위와 같습니다.
여러분들은 경상남도 뿐 아니라 다른 곳으로 한번 해보십시오.^^
자 그런데, 아까 반대로 파일이름은 봤습니다. 그런데 이게 몇 Line에 있는지를 알고 싶으면 어떻게 해야 할까요?
grep -n "경상남도" temp.txt
grep -n "경상남도" temp.txt
3:2022-12-01, 경상남도, 3
11:2022-12-02, 경상남도, 4
19:2022-12-03, 경상남도, 5
27:2022-12-04, 경상남도, 6
35:2022-12-05, 경상남도, 7
43:2022-12-06, 경상남도, 8
51:2022-12-07, 경상남도, 9
59:2022-12-08, 경상남도, 10
67:2022-12-09, 경상남도, 11
75:2022-12-10, 경상남도, 12
요렇게 하시면 젤 앞에 : 앞에 있는 수자가 라인 넘버 입니다. ^^
자 이제 다시 vi 도 연습 해볼 겸 해서 실제로 3라인에 경상남도가 있는지 한번 알아보겠습니다.
vi temp.txt
위와 같이 그냥 치십시오.
"백문이 불여 일타" 라고 ^^ 열심히 치시다 보면, 손가락이 기억을 할겁니다 .^^
이렇게 봤을때 그냥 눈으로 보셔도 ^^ 3라인데 있네요 ㅎㅎㅎ
하지만 확실하게 하기 위해서 vi 에서 :3 을 입력하고, 엔터를 쳐 보십시오.
: 하고 숫자를 치시면 해당라인으로 커서를 옮겨 줍니다. 그러니까 저희는 3라인으로 이동 시켰으니 정확하게 3라인에 경상남도가 있습니다. ^^
그리고 또한가지 더 있습니다.
:set nu 라고 vi 화면에서 입력하고 엔터를 치십시오.
제일 압줄에 줄 번호를 달아 줍니다. ^^
3라인에 확실하게 있네요 ㅎㅎㅎ
:set nonu를 입력하십시오.
다시 줄번호를 꺼줍니다.
이번에는 vi에서 빠져 나가겠습니다.
앞에서 :wq 를 하셔도 되겠지만,
저희는 :q! 를 입력합니다.
vi에서 문서를 보기만 하셨으면 상관이 없는데 실수로 뭔가를 하셨다면 초기화 해줍니다. 그래서 !는 강제로 입니다.
강제로 나가겠다는 뜻입니다. ^^
:q! 를 입력하시고, 엔터를 치시면 빠져 나갑니다.
오늘은 grep에 대해서 알아 보았습니다.
다음 시간에 tail 이라는 명령어를 알아 볼 것인데, 이때 grep을 어떻게 조합해서 사용하는지 한번 알아 보겠습니다. ^^
감사합니다.
'리눅스(LINUX)' 카테고리의 다른 글
리눅스/Linux tail 문서의 끝(꼬리)를 보는 명령어. The command for text tail. (0) | 2023.01.02 |
---|---|
리눅스/Linux 우분투 리눅스에 MySQL을 설치해보자. How to install MySQL on Ubuntu (0) | 2023.01.01 |
리눅스/Linux VMWARE에 우분투/Ubuntu 20.04 설치하기/Install (2) | 2022.12.29 |
리눅스/Linux 오라클 VPS에 접속해보자. How to connect to free VPS on Oracle Cloud. (0) | 2022.12.28 |
리눅스/Linux 파일(File) 압축하기(archive) tar 명령어 (0) | 2022.12.27 |