본문 바로가기
카테고리 없음

[Linux] more, less, head, tail, 특정 라인 출력 sed, awk ④

by 떵해이 2020. 12. 10.
300x250

○ more

    ▷ 파일의 내용을 출력하는 명령어

 

이전글에서 배운 cat명령어와 비슷하게 파일의 내용을 출력하는 명령어인데

조금씩 기능이 다른거 뿐입니다.

 

cat과 다른 점은 한 페이지씩 출력 (%로 얼마나 남았는지도 알 수 있음)

 

사용법

# more [옵션] [파일명]

 

이거 외에도 더 명령이 있습니다.

명   령 의   미
enter 글을 한 줄씩 넘기기
space bar 한 페이지를 넘기기
b 이전 페이지로 이동
q more명령 종료
! 다른 명령을 입력할 수 있는 상태로 전환
:f 현재 파일명과 줄 번호 보기

 

○ less

    ▷ more 명령어와 유사하게 한 화면 단위로 출력해주는 명령어

 

more 성능을 강화했기 때문에 more에 사용하는 키도 사용가능하고,

추가로 화살표 또는 page up, page down도 사용할 수 있다고 합니다.

 

사용법

# less [옵션] [파일명]

 

○ head

    ▷ 파일의 내용을 맨 위부터 출력하는 명령어 (기본적으로 맨위부터 10줄 출력)

 

사용법

# head [옵션] [파일명]

 

옵   션 의   미
-n n대신 숫자를 넣으면 파일 맨 앞부터 n줄까지 출력해주는 옵션

# head -n [파일명]

 

○ tail

    ▷ 파일의 내용을 맨 끝부터 출력하는 명령어 (기본적으로 맨끝부터 10줄 출력)

 

사용법

# tail [옵션] [파일명]

 

보통 사용하는 법은 head와 동일합니다.

옵   션 의   미
-n head와 동일하게 숫자를 넣으면 파일 끝에서 부터 숫자만큼 출력해주는 옵션
-f 특정 파일의 끝 부분에 새로운 행이 추가될 경우 실시간으로 출력해주는 옵션
로그 파일 모니터링할 때 유용하게 사용됩니다.

# tail -f [파일명]

 

○ sed

    ▷ 편집에 특화된 기능이 있는 명령어

        (수정, 치환, 삭제 등등 왠만한 편집 기능은 다 가능합니다.)

    ▷ sed 명령어를 통해 파일을 변경했을 경우 저장하기 전까지 원본에 손해없게 할 수 있다.

        (저장하기전까지는 명령어를 사용하면서 출력되는 결과를 보면서 확인하면서 작업할 수 있다.)

 

사용법

자주 쓰는 것만 예시 형태로 설명하도록 하겠습니다.

(라인 출력을 많이 사용하는데 아래에서 다시 나오기 때문에 그 부분 빼고 잘나오는 것

위주로 정리해보겠습니다.)

 

# sed -n '/root/p' test 명령어는 test 파일에서 root가 포함된 행들을 찾아 출력

 

# sed -n '/^52/p' test 명령어는 test 파일에서 52로 시작하는 행만 출력

 

# sed '/^$/d' test 명령어는 test 파일에서 빈 라인 삭제

 

# sed '/^ *$/d' test 명령어는 test 파일에서 빈라인, 공백으로 채워진 행 삭제

 

# sed 's/mong/root/g' test 명령어는 test 파일에서 mong -> root 로 치환 (파일 전체 치환)

 

# sed 's/mong/root/gi' test 위 명령어에서 i만 추가하여 변경 대상 찾을 때 대소문자를 무시한다는 뜻

(치환 s랑 -n과 p조합을 같이 쓰면 변경이 일어난 행들을 출력해줘서 볼 수 있다.)

 

p(출력), d(삭제), s(치환), ^(행의 처음), $(행의 끝)

 

○ awk

    ▷ grep처럼 특정한 문자열을 탐색해서 출력하는 명령어

    ▷ 탭으로 분리된 n번째 문자열을 정리하는데 특히 유용하게 사용된다.

 

사용법

 

보통 파이프로 명령을 넘겨 받아 사용하는 경우가 많이 있습니다.

파이프라인은 다중 명령어로 다음 글을 참조하시면 됩니다.

 

아래에서는 awk의 NR변수를 이용한 특정 라인 출력에 대해 적어놓았습니다.

(NR변수는 하나의 레코드를 처리한 후 1이 증가하는 변수입니다.

 보통 몇 번째 행에 있는지 나타내주는 역할을 합니다.)

 

여기서는 다른 방식의 사용방법을 자주 사용하는 3가지 방식을 예시 형태로 설명하겠습니다.

1. awk '{action}' 파일명

2. awk '패턴' '{action}' 파일명

3. awk '패턴' 파일명

 

① n번째 문자열을 출력 ( # awk '{print $[열번호]}' 파일명)

 

test 파일의 내용이

 

1 2 3

a b c

 

이렇게 들어 있습니다.

awk는 기본적으로 탭으로 분리된 몇번째 문자열을 정리하는 기능이 있습니다.

위의 파일 내용을 2열만 뽑아내고 싶으면

# awk '{print $2}' test 명령어로 가능합니다. $0을 입력하면 전체가 출력됩니다.

 

 

② n번째 문자열을 다른 기준으로 출력 ( # awk -F[기준] '{print $[문자열]}' 파일명)

 

예시로 # cat /etc/passwd 파일을 보겠습니다.

 

 

구분을 하는 기준이 기본적으로 탭인데 다른 기준으로 바꿔서 사용할 때는

# awk -F: '{print $1}' /etc/passwd

구분하는 기준을 :로 바꿔서 1열의 정보만 뽑아낼 수 있습니다.

 

 

③ 단순 문자열을 탐색할 때 ( # awk '/[찾고 싶은 문자열]/' 파일명)

 

똑같이 예시로 # cat /etc/passwd 파일로 보겠습니다.

 

 

여기서 root문자를 찾고 싶을 때

# awk '/root/' 파일명 명령어로 root문자열이 들어간 행을 찾아줍니다.

여기서 문자열은 반드시 슬래쉬(/)로 감싸줘야합니다. (탭 or 공백도 포함해서 탐색이 가능합니다.)

 

○ 특정 라인 출력

    ▷ 맨 앞 10줄 또는 맨 뒤 10줄이 아니라 중간에 있는 내용을 보기 위한 방법을 알아보겠니다.

 

3가지 방법으로 소개하겠습니다.

다음 글에서 다중 명령어를 참조하시길 바랍니다.

(다중 명령어가 이해가 안가시더라도 바로 다음글에서 설명을 보시면 됩니다.)

 

 

① head 와 tail 명령어를 응용하여 출력

 

▷ 범위 출력

 

15~20번째 줄 출력하고 싶을 때, 다중 명령어를 사용하여 결과값 출력

# head -20 test | tail -6

test 파일의 맨 앞부터 20번째 줄까지 출력하는 결과에서 뒤에서 5째줄까지만 출력

 

 

▷ 특정 라인 출력

 

19번째 줄을 출력하고 싶다면, 위와 같이 다중 명령어를 사용하여 출력

# head -19 test | tail-1

test 파일의 맨 앞부터 19번째 줄까지 출력하는 결과에서 뒤에서 1줄만 출력

 

 

② sed 명령어를 사용하여 출력

 

▷ 범위 출력

 

15~20번째 줄 출력하고 싶을 때

# sed -n '15, 20p' test

 

 

▷ 특정 라인 출력

 

19번째 줄을 출력하고 싶을 때

# sed -n 19p test

 

 

▷ 특정 행부터 파일 끝까지 출력하고 싶을 때

 

50번째 줄부터 파일 끝까지 출력하고 싶을 때

# sed -n '50, $p' test

 

다르게 표현할 수 도 있습니다.

# sed -n "50, \$p" test 이렇게도 표현할 수 있습니다.

여기는 쌍따옴표를 사용하여 '$'문자가 마지막을 의미할 수 있게 역슬래시를 붙여서 특수 문자의

의미를 그대로 지켜줄 수 있게 해준 것입니다.

그렇지 않으면 이 '$'문자가 변수를 나타내는 뜻으로 해석됩니다.

 

 

③ awk 명령어를 사용하여 출력

 

▷ 범위 출력

 

15~20번째 줄 출력하고 싶을 때

# awk "NR >= 15 && NR <= 30" test

 

 

▷ 특정 라인 출력

 

19번째 줄을 출력하고 싶을 때

# awk 'NR==10' test

 

 

▷ 특정 행부터 파일 끝까지 출력하고 싶을 때

 

50번째 줄부터 파일 끝까지 출력하고 싶을 때

# awk "NR >= 50" test

 

반응형

댓글