都说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/