삼총사의 awk

1856 단어

1. 수업 전 회고:


예1/etc 디렉터리를 찾으십시오.conf 끝 파일을/tmp 아래로 복사
cp `find /etc -type f -name '*.conf'` /tmp/

[root@wolf1 /data]# find /etc -type f -name '*.conf' |xargs cp -t /tmp/aaa/

[root@wolf1 /data]# find /etc -type f -name '*.conf' -exec cp -a {}  /backup/aaa/ \;

[root@wolf1 /data]# find /etc -type f -name '*.conf' |xargs -i cp /tmp/aaa/

예2 패키지 백업/etc 디렉터리에서/backup 아래로 매일 백업하는 패키지 이름이 다르다는 것을 보증합니다
tar zcf  /backup/wtc_`date +%F`.tar.gz /etc

예 3 stat/etc/hosts 결과에서 644 추출
[root@wolf1 ~]# stat /etc/hosts |sed -rn '4s#(^.*\(0)(.*)(/-.*)#\2#gp'
644

[root@wolf1 ~]# stat /etc/hosts |sed -rn '4s#^.*\(0(.*)/-.*#\1#gp'
644

awk


1. awk 형식


sed'누굴 찾아서 뭐해'awk'누굴 찾아서'누굴 찾아서 조건 모드 왜 명령 동작 print

2. awk 실행 과정


3. 행 및 열 가져오기


1) 행(record 레코드)에서 행 NR ====Number of Record 레코드 행 번호
[root@wolf1 /data]# awk 'NR==1' lidao.txt
101,oldboy,CEO

[root@wolf1 /data]# sed -n '/oldboy/p' lidao.txt
101,oldboy,CEO

2) 열(field 필드)
$NF 마지막 열 - F 구분자 지정
 oldboy.txt 4 1   2 4  
[root@wolf1 ~]# sed -n '4p' oldboy.txt |awk '{print $1,$2,$4}'
I like ball

[root@wolf1 ~]# awk 'NR==4{print $1,$2,$4}' oldboy.txt 
I like ball

4. 여과


1) 비교:
 /etc/passwd  3 999 
[root@wolf1 ~]# awk -F":" '$3>999' /etc/passwd
long:x:1000:1000::/home/long:/bin/bash
oldboy:x:1002:1002::/home/oldboy:/bin/bash

 /etc/passwd 4 0  1000 
[root@wolf1 ~]# awk -F":" '$4>0 && $4<1000' /etc/passwd

[root@wolf1 ~]# df -h | awk '$5+0>10'
/dev/sda1       197M  105M   93M  54% /boot

좋은 웹페이지 즐겨찾기