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