"리눅스 awk"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-source +syntaxhighlight))
 
(사용자 4명의 중간 판 29개는 보이지 않습니다)
8번째 줄: 8번째 줄:
*주로 [[유닉스 계열]]에서 사용되는 [[스크립트 언어]]
*주로 [[유닉스 계열]]에서 사용되는 [[스크립트 언어]]
*텍스트 형태로 되어있는 데이터를 필드로 구분하여 처리
*텍스트 형태로 되어있는 데이터를 필드로 구분하여 처리
==문법==
<syntaxhighlight lang="bash">
*awk 'pattern'
</syntaxhighlight>
<syntaxhighlight lang="bash">
*awk '{action}'
</syntaxhighlight>
<syntaxhighlight lang="bash">
*awk 'pattern {action}'
</syntaxhighlight>


==변수==
==변수==
{{참고|awk 필드 변수, 빌트인 변수}}
*필드값 변수
*필드값 변수
: $0 → 모든 필드 (행의 값 그대로)
: $0 → 모든 필드 (행의 값 그대로)
17번째 줄: 29번째 줄:
: $(NF-1) → 마지막 전 필드
: $(NF-1) → 마지막 전 필드
: $NF → 마지막 필드
: $NF → 마지막 필드
*[[awk 빌트인 변수]]


==실행 예시==
==원하는 필드 출력 예시1==
<source lang='dos'>
* date에서 원하는 필드만 출력하는 예시
[root@jmnote ~]# echo | awk '{ print 3+2 }'
{{소스헤더|현재 시간 출력}}
<syntaxhighlight lang="console">
john@zetawiki:~$ date
Wed Jul 20 21:59:52 KST 2016
</syntaxhighlight>
{{소스헤더|현재 시간에서 2번째 필드인 월을 출력}}
<syntaxhighlight lang="console">
john@zetawiki:~$ date | awk '{print $2}'
Jul
</syntaxhighlight>
 
==원하는 필드 출력 예시2==
<syntaxhighlight lang='console'>
[root@zetawiki ~]# echo | awk '{ print 3+2 }'
5
5
</source>
</syntaxhighlight>
<source lang='dos'>
<syntaxhighlight lang='console'>
[root@jmnote ~]# echo | awk '{ print "Hello, world!" }'
[root@zetawiki ~]# echo | awk '{ print "Hello, world!" }'
Hello, world!
Hello, world!
</source>
</syntaxhighlight>
<source lang='dos'>
<syntaxhighlight lang='console'>
[root@jmnote ~]# cat /etc/passwd | grep apache
[root@zetawiki ~]# cat /etc/passwd | grep apache
apache:x:48:48:Apache:/var/www:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
[root@jmnote ~]# cat /etc/passwd | awk /apache/
[root@zetawiki ~]# cat /etc/passwd | awk /apache/
apache:x:48:48:Apache:/var/www:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
</source>
</syntaxhighlight>
 
==필드 구분자를 통한 출력 예시==
*공백을 필드 구분자로 사용하여 필드를 나눈 후 9번째 필드 출력
<syntaxhighlight lang="console">
john@zetawiki:~$ ll
total 24
drwxrwxr-x  3 john john 4096 Feb 14 14:06 ./
drwxr-xr-x 12 john john 4096 Feb 14 14:06 ../
-rw-rw-r--  1 john john  69 Feb 14 13:52 a.c
-rw-rw-r--  1 john john  19 Feb 14 14:06 b.c
-rw-rw-r--  1 john john  38 Feb 14 14:06 c.c
drwxrwxr-x  2 john john 4096 Feb 14 13:53 d/
john@zetawiki:~$ ll | awk -F " " '{print $9}'
 
./
../
a.c
b.c
c.c
d/
</syntaxhighlight>
;→ 공백을 필드 구분자로 사용하여 필드를 나눈 후 앞에서 9번째 필드를 출력해줌


==같이 보기==
==같이 보기==
39번째 줄: 85번째 줄:
*[[awk 마지막 컬럼 출력]]
*[[awk 마지막 컬럼 출력]]
*[[awk 컬럼 추가]]
*[[awk 컬럼 추가]]
*[[awk 간단한 계산]]
*[[awk 입력값 없이 출력하기]]
*[[awk 입력값 없이 출력하기]]
*[[awk 필드 변수, 빌트인 변수]]
*[[awk 필드 구분자 변경하여 출력]]
*[[awk 필드 구분자 변경하여 출력]]
*[[리눅스 100000 바이트 이상인 파일 목록 보기 (awk)]]
*[[리눅스 100000 바이트 이상인 파일 목록 보기 (awk)]]
*[[리눅스 파일 특정 행 내용 교체]]
*[[리눅스 파일 특정 행 내용 교체]]
*[[ps -ef PID 정확히 grep하기]]
*[[ps -ef PID 정확히 grep하기]]
*[[cut]]
*[[리눅스 cut]]
*[[sed]]
*[[리눅스 sed]]
*[[perl]]
*[[리눅스 perl]]
*[[tr]]
*[[리눅스 tr]]
*[[grep]]
*[[리눅스 grep]]
*[[리눅스 echo]]
*[[리눅스 a2p]] (awk를 perl로 변환)
*[[리눅스 쉘 한줄코드 실행]]
*[[리눅스 쉘 한줄코드 실행]]


==참고 자료==
==참고==
*https://en.wikipedia.org/wiki/AWK
*https://en.wikipedia.org/wiki/AWK
*http://terms.naver.com/entry.nhn?docId=863904&cid=391&categoryId=391
*http://terms.naver.com/entry.nhn?docId=863904&cid=391&categoryId=391
58번째 줄: 108번째 줄:
[[분류:/bin]]
[[분류:/bin]]
[[분류:/usr/bin]]
[[분류:/usr/bin]]
[[분류: 리눅스 필터]]

2020년 11월 2일 (월) 02:39 기준 최신판

1 개요[ | ]

awk, gawk
오크
/bin/awk
/bin/gawk
/usr/bin/awk

2 문법[ | ]

*awk 'pattern'
*awk '{action}'
*awk 'pattern {action}'

3 변수[ | ]

  • 필드값 변수
$0 → 모든 필드 (행의 값 그대로)
$1 → 첫번째 필드
$2 → 두번째 필드
$(NF-1) → 마지막 전 필드
$NF → 마지막 필드

4 원하는 필드 출력 예시1[ | ]

  • date에서 원하는 필드만 출력하는 예시
현재 시간 출력
john@zetawiki:~$ date
Wed Jul 20 21:59:52 KST 2016
현재 시간에서 2번째 필드인 월을 출력
john@zetawiki:~$ date | awk '{print $2}'
Jul

5 원하는 필드 출력 예시2[ | ]

[root@zetawiki ~]# echo | awk '{ print 3+2 }'
5
[root@zetawiki ~]# echo | awk '{ print "Hello, world!" }'
Hello, world!
[root@zetawiki ~]# cat /etc/passwd | grep apache
apache:x:48:48:Apache:/var/www:/sbin/nologin
[root@zetawiki ~]# cat /etc/passwd | awk /apache/
apache:x:48:48:Apache:/var/www:/sbin/nologin

6 필드 구분자를 통한 출력 예시[ | ]

  • 공백을 필드 구분자로 사용하여 필드를 나눈 후 9번째 필드 출력
john@zetawiki:~$ ll
total 24
drwxrwxr-x  3 john john 4096 Feb 14 14:06 ./
drwxr-xr-x 12 john john 4096 Feb 14 14:06 ../
-rw-rw-r--  1 john john   69 Feb 14 13:52 a.c
-rw-rw-r--  1 john john   19 Feb 14 14:06 b.c
-rw-rw-r--  1 john john   38 Feb 14 14:06 c.c
drwxrwxr-x  2 john john 4096 Feb 14 13:53 d/
john@zetawiki:~$ ll | awk -F " " '{print $9}'

./
../
a.c
b.c
c.c
d/
→ 공백을 필드 구분자로 사용하여 필드를 나눈 후 앞에서 9번째 필드를 출력해줌

7 같이 보기[ | ]

8 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}