awk命令用法介紹

​10月18日任務centos

9.6/9.7 awkbash

 

9.6/9.7 awk命令ssh

  • head -n2 test.txt|awk -F ':' '{print $1}'post

  • head -n2 test.txt|awk -F ':' '{print $0}'排序

  • awk -F ':' '{print $1"#"$2"#"$3"#"$4}'console

  • awk '/oo/ test.txttest

  • awk -F ':' '/root/ {print $1,$3} /test/ {print $1,$3}' test.txtawk

  • awk -F ':' '$3=="0"' /etc/passwdftp

  • awk -F ':' '$3>="500"' /etc/passwd語法

  • awk -F ':' '$3>=500' /etc/passwd

  • awk -f  ':' '$7!="/sbin/nologin"' /etc/passwd

  • awk -F ':' '$3<$4' /etc/passwd

  • awk -F ':' '$3>$5' && $3<"7" /etc/passwd

  • awk -F ':' '$3>1000 || $7=="/bin/bash"' /etc/passwd

  • head -5 /etc/passwd |awk -F ':' '{OFS="#"}{print $1,$3,$4} '

  • awk -F ':' '{OFS="#"} {if ($3>1000) {print $1,$2,$3,$4}}' /etc/passwd

  • head -n3 /etc/passwd |awk -F ':' '{print NF}'

  • head -n3 /etc/passwd |awk -F ':' '{print NR}'

  • awk 'NR>40' /etc/passwd

  • awk -F ':' 'NR<20 && $1 ~ /root/' /etc/passwd

  • head -n3 /etc/passwd |awk -F ':' '$1="root"'

  • awk -F ':' '{(tot=tot$3)}; END {print tot}' /etc/passwd

  • awk -F ':' '{if ($1=="root") {print $0}}' /etc/passwd

 

範例:

[root@centos6 awk]# awk -F ':' '{print $1}' test.txt    #打印第一段,-F表示指定分隔符,$1表示第一段
root
bin
[root@centos6 awk]# awk -F ':' '{print $0}' test.txt      #打印所有,$0表示全部段
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@centos6 awk]# awk '{print $0}' test.txt           #打印全部,至關於cat命令
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

[root@centos6 awk]# awk '{print $1}' 1.txt     #若是不指定分隔符,默認空格表示分隔符
ss
11
df

[root@centos6 awk]# cat 1.txt 
ss dd
11 dd
df ss
[root@centos6 awk]# awk -F ':' '{print $1"#"$2"#"$3}' test.txt         #指定中間以#爲分隔符(這種方法比較麻煩,其餘方法下邊介紹)
root#x#0
bin#x#1
daemon#x#2
[root@centos6 awk]# awk  '/oo/' test.txt                                      #匹配包含oo的行
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

[root@centos6 awk]# awk -F ':' '$1 ~ /oo/' test.txt                   #指定第一行包含oo匹配出來
root:x:0:0:root:/root:/bin/
[root@centos6 awk]# awk -F ':' '/root/ {print $1,$3} /user/ {print $1,$3,$4}' test.txt     #打印包含root的第一第三列,打印包含user的第一第三第四列。
root 0
operator 11
saslauth 499 76
user1 500 500
user2 501 501
user3 502 502
user4 503 503
[root@centos6 awk]# egrep 'root|user' test.txt 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
user1:x:500:500::/home/user1:/bin/bash
user2:x:501:501::/home/user2:/bin/bash
user3:x:502:502::/home/user3:/bin/bash
user4:x:503:503::/home/user4:/bin/bash
[root@centos6 awk]# awk -F ':' '$3==0' test.txt              #指定第三段=0的行
root:x:0:0:root:/root:/bin/bash
[root@centos6 awk]# awk -F ':' '$3==0 {print $1}' test.txt            #指定第三段=0的行,打印出第一段內容
root
[root@centos6 awk]# awk -F ':' '$3>=500 {print $0}' test.txt     #  大於等於500的行,500不能加雙引號,不然表示按找阿斯瑪排序計算
user1:x:500:500::/home/user1:/bin/bash
user2:x:501:501::/home/user2:/bin/bash
user3:x:502:502::/home/user3:/bin/bash
user4:x:503:503::/home/user4:/bin/bash
[root@centos6 awk]# awk -F ':' '$7!="/sbin/nologin"' test.txt             #第三段不等於/sbin/nologin的行
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
user1:x:500:500::/home/user1:/bin/bash
user2:x:501:501::/home/user2:/bin/bash
user3:x:502:502::/home/user3:/bin/bash
user4:x:503:503::/home/user4:/bin/bash
[root@centos6 awk]# awk -F ':' '$3>"5" && $3<"7"' test.txt       #匹配$3 >5 <7的行,注意加引號用法
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
user1:x:500:500::/home/user1:/bin/bash
user2:x:501:501::/home/user2:/bin/bash
user3:x:502:502::/home/user3:/bin/bash
user4:x:503:503::/home/user4:/bin/bash
[root@centos6 awk]# awk -F ':' '$3>5 && $3<7' test.txt             #不加引號結果
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
[root@centos6 awk]# awk -F ':' '$3>500 || $7=="/sbin/nologin"' test.txt 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
user2:x:501:501::/home/user2:/bin/bash
user3:x:502:502::/home/user3:/bin/bash
user4:x:503:503::/home/user4:/bin/bash
[root@centos6 awk]# awk -F ':' '$3>500 || $7 ~ /bash/' test.txt            #   匹配$3>500,$7包含/bash/的行
root:x:0:0:root:/root:/bin/bash
user1:x:500:500::/home/user1:/bin/bash
user2:x:501:501::/home/user2:/bin/bash
user3:x:502:502::/home/user3:/bin/bash
user4:x:503:503::/home/user4:/bin/bash
[root@centos6 awk]# awk -F ':' '{OFS="#"} $3>500 || $7 ~ /bash/ {print $1,$2,$3}' test.txt       #OFS指定分隔符
root#x#0
user1#x#500
user2#x#501
user3#x#502
user4#x#503
[root@centos6 awk]# awk -F ':' '{OFS="#"} {if ($3>500) {print $1,$2,$3,$4}}' test.txt      #另外一種語法
user2#x#501#501
user3#x#502#502
user4#x#503#503
[root@centos6 awk]# awk -F ':' '{OFS="#"} {if ($3>500) {print NF":" $1,$2,$3,$4}}' test.txt     #NF表示多少段
7:user2#x#501#501
7:user3#x#502#502
7:user4#x#503#503
[root@centos6 awk]# awk -F ':' '{OFS="#"} {if ($3>500) {print NR":" $1,$2,$3,$4}}' test.txt       #NR表示多少行
22:user2#x#501#501
23:user3#x#502#502
24:user4#x#503#503
[root@centos6 awk]# awk -F ':' '{OFS="#"} {if ($3>500) {print NR":" $0}}' test.txt 
22:user2:x:501:501::/home/user2:/bin/bash
23:user3:x:502:502::/home/user3:/bin/bash
24:user4:x:503:503::/home/user4:/bin/bash

[root@centos6 awk]# awk -F ':' 'NR<=10 && $1 ~ /root|sync/' test.txt    #匹配前十列,第一段中包含root或者sync的行
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
相關文章
相關標籤/搜索