티스토리 뷰
구조 : awk '패턴 {action}' "파일이름"
패턴
END : 특정 명령을 실행한후 제시되는 문장을 실행시킨다
/정규표현식/ : 정규표현식의 패턴을 포함하는 라인에서 문장을 실행시킨다
패턴1 && 패턴2 : 패턴1과 패턴2를 동시에 만족시킬때 문장을 실행시킨다
패턴1 || 패턴2 : 패턴 1이나 패턴2중 하나만 만족시켜도 문장 실행시킨다
! 패턴 : 패턴과 일치하지 않을 경우 문장을 실행시킨다
연산자
+ 더하기
- 빼기
* 곱하기
/ 나누기
A % B A를 B로 나눈 나머지값
++ 어떤값에서 1을 증가
-- 어떤값에서 1을 감소
대입연산자
A = B A = B
A += B A = A + B
A -= B A = A - B
A *= B A = A*B
A /= B A = A/B
A %= B A = A%B
논리연산자
|| or
&& and
비교연산자
! not
> 크다
< 작다
>= 크거나 같다
<= 작거나 같다
== 같다
!= 다르다
awk 내부 변수 (미리 지정되어 있는 변수)
FS 필드 구분자
RS 레코드 구분자
NF 현재 레코드에서 필드수
NR 현재 파일에서 전제 레코드 수
OFS 출력시의 필드 구분자
ORS 출력시의 레코드 구분자
예제
- 1, 3번 필드를 출력하라
$0 전체필드를 의미함, 출력할때 $0 을 쓰면 그냥 cat 명령어를 실행한것과 동일한 기능이다
awk '$2 > 20 {print $1,$2}' 파일이름
- 2번째 필드값이 20보다 큰 레코드 중에 1, 2번째 필드를 출력하라
sed 's/nom / /g' 파일이름 | awk '$2 > 25 {print $1,$2}' 파일이름
- nom을 공백으로 바꾸고 2번째 필드값이 25이상인 레코드 중에서 1, 2번 필드를 출력하라
sed 's/nom / /g' 파일이름 | awk '$2 > 25 {print $1"문자1",$2"문자2"}' 파일이름
- 위의 출력값에 필드1과 필드2에 특정 문자를 꼽사리 끼워서 좀 꾸며서 출력할수도 있음
sed -f 문법넣은파일1 파일이름 | awk -f 문법넣은파일이름2
- -f 가 파일로 실행하는 명령인거 같음
- 편집기로 문법넣은파일을 생성하면 되는듯 함 ' '는 안 써주는듯 커맨드로 날릴때 써주는거 ' '
ls -al | awk '$5 > 1048576{print $5, $9}'
: ls -al 명령어를 통해 출력된 값 중에 필드 5번째값이 1M 이상이면 해당 라인의 5번째 필드와 9번째 필드를 출력하라
awk /root/ /etc/group
: /etc/group 파일의 root 라는 문자열이 포함된 라인을 출력
awk -F: /root/'{print $1}' /etc/passwd
: -F 구분자는 필드를 원래 공백으로 구분짓지만 -F 바로 나오는 문자열로 필드를 구분
awk 프로그래밍
sum = 0;
line = 0;
}
{
sum += $2;
line ++;
}
END {
average = sum / line;
printf "나이의 평균 : "average"세";
}
awk
ps -ef | grep httpd
ps -ef | awk '/httpd/ {print}'
ps -ef | awk '/httpd/ {print $0}'
- $0 은 입력라인 전체를 의미
UID PID PPID C STIME TTY TIME CMD
$1 $2 $3 $4 $5 $6 $7 $8
UID와 C만 출력하고 싶다면
- ps -ef | awk '/httpd/ {print $1, $4}'
UID, PID, C 필드를 출력하고 처리 끝나고 마지막에 C (CPU 사용시간) 의 합을 출력
- ps -ef | awk '/httpd/ {print $1, $2, $4; sum += $4} END {print "sum = ", sum}'
CPU 사용시간이 1이상인 프로세스들을 출력하고 그 합을 출력
- ps -ef | awk '/httpd/ {if ($4 >= 1) print $1, $2, $4; sum += $4} END {print "sum = ", sum}'
grep
test.txt 파일에서 시작문자가 "C" 마지막문자가 "3" 으로 끝나는 문자열을 포함하고 있는 문장 검색
- grep "^c.*3$" test.txt
test.txt 파일에서 grep 명령어를 사용하여 "1" 을 포함하고 있는 모든 문장검색
- cat test.txt | grep "1"
cat test.txt | awk '/신규/ {print $6}'
- test.txt 파일에서 신규를 포함한 6번째 문장만 출력
BEGIN{
word = 0;
}
{
word += NF;
}
END{
print "Word Count:"
word;(End)
}
'프로그램' 카테고리의 다른 글
개발자 프리랜서 구인 및 아웃소싱 (개발자 커뮤니티) (0) | 2015.06.10 |
---|---|
진수계산 (ASCII 코드표) (0) | 2015.06.10 |
루비 ruby 언어 (0) | 2015.06.10 |
파일 및 폴더 암호 걸기 프로그램 easy file locaker (무료) (0) | 2015.06.04 |
CPU 로드에 체크하여 특정 명령어 실행하기 (0) | 2015.06.03 |
- Total
- Today
- Yesterday
- L2TP
- pptp
- centos8
- virtualbox
- ssh
- OpenVPN
- gitlab
- cURL
- 베이어다이나믹
- galera
- yum
- SSL
- 인증서
- mod_security
- Apache
- 리눅스
- kvm
- WAF
- IPSEC
- GeoIP
- centOS7
- softether
- iptables
- MySQL
- ntp
- glusterfs
- NGINX
- php
- HAProxy
- mariadb
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |