awk 編程

awk

[root@localhost ~]# awk '{print $0}' /etc/passwd

root:x:0:0:root:/root:/bin/bash

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

[root@localhost ~]# awk '{print ""}' /etc/passwd


[root@localhost ~]# awk '{print "hihi"}' /etc/passwd

hihi

hihi

hihi

hihi

[root@localhost ~]# awk -F":" '{print $1 ":" $2}' /etc/passwd

root:x

bin:x

daemon:x

adm:x

awk 編程

NF:輸出的字段個數

1)awk '{print NF}'

2)awk '{print $NF}'   讀取輸出行的第 個字段

3)awk 'BEGIN{}'

awk 'BEGIN {FS="[:, ]"} print $0' /etc/passwd

awk 'BEGIN {print toupper("hello"); print tolower("WORLD")}'

4)awk '/pattern/{action}' file

zdd.txt

t Price/lbs

Banana 0.89

Paech 0.79

Kiwi 1.50

Pineapple 1.29

Apple 0.99

 

[root@localhost ~]# awk '/[1-9]\.[0-9][0-9]$/ {print $0,"*"}' zdd.txt

Kiwi 1.50 *

Pineapple 1.29 *

5)awk -F:'{}'

[root@localhost ~]# echo $PATH |awk -F: '{

> for(i=1;i<=NF;i++){

> printf "%s\n",$i;

> }

> }'

/usr/local/software/mysql/bin

/usr/local/sbin

/usr/local/bin

/sbin

/bin

/usr/sbin

/usr/bin

/usr/local/software/erlang/bin

/root/bin

[root@localhost ~]# echo $PATH

/usr/local/software/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin

6)awk '條件{}' file

awk '$2>=1.0{printf "%s\t%s\n",$0,"Expensive";}'  zdd.txt

t Price/lbs     Expensive

Kiwi 1.50       Expensive

Pineapple 1.29  Expensive

7)

awk '{printf "%-15s %s\n",$1,$2;}' zdd.txt

t               Price/lbs

Banana          0.89

Paech           0.79

Kiwi            1.50

Pineapple       1.29

Apple           0.99

8)awk '{OFS="";print }'

[root@localhost ~]# echo "cat  wu sensation" | awk '{OFS="..";print $0}'

cat  wu sensation

[root@localhost ~]# echo "cat  wu sensation" | awk '{OFS="..";$1=$1;print $0}'         

cat..wu..sensation

[root@localhost ~]# echo "cat  wu sensation" | awk '{OFS="..";print $1,$2,$3}'

cat..wu..sensation

[root@localhost ~]# echo "cat  wu sensation" | awk '{OFS="..";print $1,$2,$3,$4}'

cat..wu..sensation..


9)getline

1>command |getline :將command 的結果賦值給$0

command |getline var:將command的結果賦值給var

2>root@localhost ~]# cat 2.txt|awk 'BEGIN{getline;print $0}'

100 200 300

[root@localhost ~]# cat 2.txt|awk 'BEGIN{getline d;print $0}'


[root@localhost ~]# cat 2.txt|awk 'BEGIN{getline d;print d;}'

100 200 300

3>[root@localhost ~]# awk 'BEGIN{while(getline<"/etc/passwd">0);print $1;}'           

xiaodong2:x:549:549::/usr/home/xiaodong2:/bin/bash

[root@localhost ~]# awk 'BEGIN{while("who -u"|getline) print $1}'

root

root

root

10)

ARGC   命令行變元個數 

ARGV      命令行變元數組 

FILENAME   當前輸入文件名 

FNR   當前文件中的記錄號 

FS   輸入域分隔符,默認爲一個空格 

RS   輸入記錄分隔符 

NF   當前記錄裏域個數 

NR   到目前爲止記錄數 

OFS   輸出域分隔符 

ORS      輸出記錄分隔符 

        11)打開外部文件

         awk 'BEGIN{while(cat "/etc/passwd"|getline){print $0;};close("/etc/passwd")}'

         awk 'BEGIN{while(getline < "/etc/passwd"){print $0;};close("/etc/passwd")}'

        12)

            Flag=abcd 

            awk '{print '$Flag'}'   結果爲abcd 

            awk '{print  "$Flag"}'   結果爲$Flag






sed

1)ns :替換

壓縮空白:sed  's/^$//g'

2)nd:刪除

1>sed '1d' file 刪除第一行

sed '2,$d' file 刪除第二行到最後一行

2>2.txt

100 200 300

rr  aa bb

ciejo2     

[root@localhost ~]# sed '/[0-9]/d' 2.txt

rr  aa bb

3) -n :顯示

sed -n '1p' file   顯示第一行

sed -n '2,$p' file  顯示第二行到最後一行

sed -n '/100/p' 1.txt  顯示包含100的行

100 9 19 20

100 89 70 80

[root@localhost ~]# sed -n '/100/p' 1.txt

100 9 19 20

100 89 70 80

[root@localhost ~]# sed -n 's/100//p' 1.txt

9 19 20

89 70 80

4)sed -y:對應着替換

sed -y '/[a-z]/[A-Z]/g'

5)sed -e:跟一個表達式

sed -e expression,-e expression = sed -e expression,expression

6)

'i':前插

‘a’:後插

sed  'na ajjj ' file :第n行增加ajjjj

[root@localhost ~]# sed '1a abc efg' 1.txt

100 9 19 20

abc efg

100 89 70 80

300 546 12 00

7)sed 'nc ssiejie' file :第n行內容 替換爲ssiejie

[root@localhost ~]# sed '1c ssie' 1.txt

ssie

100 89 70 80

300 546 12 00

8)匹配子串

sed '/\([0-9]\{\+3\}\)/abc\1/' 

[root@localhost ~]# echo seven EGIGHT |sed 's/\([a-z]\+\) \([A-Z]\+\)/\2 \1/'

EGIGHT seven

[root@localhost ~]# echo 8349aFde|sed 's/[0-9]+\([a-zA-Z]\+\)/\1/'    

8349aFde

[root@localhost ~]# echo 8349aFde|sed 's/\([0-9]\+\)+\([a-zA-Z]\+\)/\1/'

8349aFde

[root@localhost ~]# echo 8349aFde|sed 's/\([0-9]\+\)\([a-zA-Z]\+\)/\1/' 

8349

9)[root@localhost ~]# echo /***eeioejiowjioejo****/|sed ':/\*.*\*/::g'

/***eeioejiowjioejo****/

[root@localhost ~]# echo /***eeioejiowjioejo****/|sed 's:/\*.*\*/::g'


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章