測試文件awk.txtlinux
及格:張三:67 不及格:李四:58 及格:小明:72 優秀:小虎:95 不及格:小蘭:49
編寫腳本awk1.sh: #!/bin/bash sort -n awk.txt|awk -F ":" '{print $1}'|uniq >考試.txt sort awk.txt|awk -F ":" '{print $1}'|uniq -c >123.txt for a in `cat 考試.txt`;do echo "[$a]":`awk -v c=$a '$2==c {print $1}' 123.txt`人 awk -v b=$a -F ":" '{OFS=":"} $1==b {print $2,$3}' awk.txt done
[root@linux-128 test]# sh awk1.sh [不及格]:2人 李四:58 小蘭:49 [及格]:2人 張三:67 小明:72 [優秀]:1人 小虎:95
[root@linux-128 awk]#cat 1.txt 1 aa 2 bb 3 ee 4 ss [root@linux-128 awk]#cat 2.txt 1 ab 2 cd 3 ad 4 bd 5 de
[root@linux-128 awk]# awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}' 1.txt 2.txt 1 ab aa 2 cd bb 3 ad ee 4 bd ss 5 de
[root@linux-128 awk]#cat 2.txt 1 ab 2 cd 3 ad 4 bd 5 de
print和printf的區別shell
[root@linux-128 awk]# awk '{print $1}' 2.txt 1 2 3 4 5 [root@linux-128 awk]# awk '{printf $1}' 2.txt 12345[root@linux-128 awk]# ^C
echo "" 的做用是換行數組
[root@linux-128 awk]# awk '{printf $1}' 2.txt; echo"" 12345
[root@linux-128 awk]# awk '{printf ("%s+",$1)}' 2.txt;echo "" 1+2+3+4+5+
咱們能夠用sed來實現這個需求bash
[root@linux-128 awk]# cat 2.txt|awk '{print $1}'|xargs|sed -r 's/ /+/'g 1+2+3+4+5
gsub和sed中替換功能差很少函數
[root@linux-128 awk]# cat 1.txt 1 aa 2 bb 3 ee 4 ss [root@linux-128 awk]# awk 'gsub(/[0-9]/,"abc")' 1.txt abc aa abc bb abc ee abc ss
[root@linux-128 awk]# sed 's/[0-9]/abc/g' 1.txt abc aa abc bb abc ee abc ss
[root@linux-128 awk]# awk 'gsub(/[0-9]/,"abc",$1) {print $0}' 1.txt abc aa abc bb abc ee abc ss