awk 例項練習(一)

2021-06-08 02:05:34 字數 4138 閱讀 5820

前一篇學習了awk的基本知識,現在來做一些練習加深一下印象。

假設我們有這樣乙個待處理的檔案"grade.txt":

m.tansley     05/99     48311     green     8     40     44

j.lulu     06/99     48317     green     9     24     26

p.bunny     02/99     48     yellow     12     35     28

j.troll     07/99     4842     brown-3     12     26     26

l.tansley     05/99     4712     brown-2     12     30     28

#列印整個檔案

zhuyupeng@zhuyupeng-pc~

$ awk '' grade.txt

m.tansley       05/99   48311   green   8       40      44

j.lulu          06/99   48317   green   9       24      26

p.bunny         02/99   48      yellow  12      35      28

j.troll         07/99   4842    brown-3 12      26      26

l.tansley       05/99   4712    brown-2 12      30      28

#列印第一和第四個域

zhuyupeng@zhuyupeng-pc~

$ awk '' grade.txt

m.tansley green

j.lulu green

p.bunny yellow

j.troll brown-3

l.tansley brown-2

#列印表頭

zhuyupeng@zhuyupeng-pc

~

$ awk 'begin

> ' grade.txt

name            belt

---------------------------

m.tansley       green

j.lulu  green

p.bunny yellow

j.troll brown-3

l.tansley       brown-2

正規表示式相關

為使一域號匹配正規表示式,使用符號『~』後緊跟正規表示式,也可以用 i f語句。awk中if後面的條件用()括起來。

#下面**列印$4 包含 brown 的行

zhuyupeng@zhuyupeng-pc

~

$ awk '$4~/brown/ ' grade.txt

j.troll         07/99   4842    brown-3 12      26      26

l.tansley       05/99   4712    brown-2 12      30      28

#非精確匹配

zhuyupeng@zhuyupeng-pc

~

$ awk '$3 ~/48/ ' grade.txt

m.tansley       05/99   48311   green   8       40      44

j.lulu          06/99   48317   green   9       24      26

p.bunny         02/99   48      yellow  12      35      28

j.troll         07/99   4842    brown-3 12      26      26

#精確匹配

zhuyupeng@zhuyupeng-pc

~

$ awk '$3=="48" ' grade.txt

p.bunny         02/99   48      yellow  12      35      28

#不匹配 使用 『!~』

zhuyupeng@zhuyupeng-pc

~

$ awk '$0 !~ /brown/' grade.txt

m.tansley       05/99   48311   green   8       40      44

j.lulu          06/99   48317   green   9       24      26

p.bunny         02/99   48      yellow  12      35      28

zhuyupeng@zhuyupeng-pc

~

$ awk '$4 != "brown-2" ' grade.txt

m.tansley       05/99   48311   green   8       40      44

j.lulu          06/99   48317   green   9       24      26

p.bunny         02/99   48      yellow  12      35      28

j.troll         07/99   4842    brown-3 12      26      26

#小於

zhuyupeng@zhuyupeng-pc

~

$ awk '$6 < $7 ' grade.txt

m.tansley       05/99   48311   green   8       40      44$1 try better at the next comp

j.lulu          06/99   48317   green   9       24      26$1 try better at the next comp

#設定大小寫

zhuyupeng@zhuyupeng-pc

~

$ awk '/[gg]reen/' grade.txt

m.tansley       05/99   48311   green   8       40      44

j.lulu          06/99   48317   green   9       24      26

#匹配第乙個域的第三個字元是『a』

zhuyupeng@zhuyupeng-pc

~

$ awk '$1 ~/^...a/' grade.txt

m.tansley       05/99   48311   green   8       40      44

l.tansley       05/99   4712    brown-2 12      30      28

#'或'匹配,使用 『|』 ,需使用括號括起來

zhuyupeng@zhuyupeng-pc

~

$ awk '$0 ~/(yellow|brown)/' grade.txt

p.bunny         02/99   48      yellow  12      35      28

j.troll         07/99   4842    brown-3 12      26      26

l.tansley       05/99   4712    brown-2 12      30      28

原文**:

awk 例項練習(一)

前一篇學習了awk的基本知識,現在來做一些練習加深一下印象。假設我們有這樣乙個待處理的檔案 grade.txt m.tansley 05 99 48311 green 8 40 44 j.lulu 06 99 48317 green 9 24 26 p.bunny 02 99 48 yellow 1...

awk 例項練習(一)

前一篇學習了awk的基本知識,現在來做一些練習加深一下印象。假設我們有這樣乙個待處理的檔案 grade.txt m.tansley 05 99 48311 green 8 40 44 j.lulu 06 99 48317 green 9 24 26 p.bunny 02 99 48 yellow 1...

awk 例項練習(一)

前一篇學習了awk的基本知識,現在來做一些練習加深一下印象。假設我們有這樣乙個待處理的檔案 grade.txt m.tansley 05 99 48311 green 8 40 44 j.lulu 06 99 48317 green 9 24 26 p.bunny 02 99 48 yellow 1...