都說sed awk 運維人員的必備工具、今天起開始整理相關筆記、首先認識一下這兩個東西。
共性:使用相同的文法 [address]/pattern/action/flag
都是面向字元流的、從一個檔案一次銀行的讀取輸入、并輸出到标準輸出、即輸入驅動的
都是使用正規表達式進行模式比對的
都允許使用者在腳本中指定指令
是以個人認為有幾個方面需要突破:文法、正則、編寫腳本的思路
[root@hack test]#今天寫的腳本顯示洲及所在州的人名
#! /bin/sh
awk -F "," '{ print $4","$0 }' $* | sort |
awk -F "," '
$1 == LastState { print "\t\t"$2 }
$1 != LastState { LastState = $1;print $1;print "\t\t"$2 }'
list檔案
John Daggett,341 King Road,Plymouth MA
Alice Ford,22 East Broadway,Richmond VA
Terry Kalkas,402 Lans Road,Beaver Falls PA
Amy Wilde,334 Bayshore Pkwy,Mountain View CA
Eric Adans,20 Post Road,Sudbury MA
Sal Carpenter,73 6th Street,Boston MA
sedscr處理檔案
s/ MQ/, mqwwqdhuw355w/
s/ MA/, MMMMMMMMMMMM/
s/ PA/, Penccccccccccc/
s/ CA/, California/
s/ VA/, Virginia/
s/ OK/, Oklahoma/
指令 sed -f sedscr | byState 輸出
California
Amy Wilde
MMMMMMMMMMMM
Eric Adans
John Daggett
Sal Carpenter
Penccccccccccc
Terry Kalkas
Virginia
Alice Ford
這個地方有一個就是如何把自己寫的shell程式設計可執行的程式
chmod +x byState 賦予執行權限
./byState或者 bash byState 執行
如果提示byState不是可執行程式 export PATH=$PATH:/home/test #my byState in /home/test/
本文轉自 aklaus 51CTO部落格,原文連結:http://blog.51cto.com/aklaus/1763223