sed 基本使用
1.指定简单指令 sed [-e] 'instruction' file 只有在命令行上给出多个指令时才需要使用-e选项。sed ‘s/MA/Mass/' list
使用单引号可以阻止shell解释编辑指令中的特殊字符或空格。sed 's/MA/, Mass/' list
有三种方式可以指定命令行上的多重指令:
a. 用分号分隔指令。
sed 's/MA/, MAss/; s/ PA/, Penn/' list
b.在每个指令前放-e
sed -e ’s/MA/, Mass/‘ -e 's/ PA/, Penn/' list
c.使用Bourne shell 的分行指令功能。在输入单引号后按return键,就会出现多行输入的提示符(>)
sed '
>s / MA/, Mass/
> s / PA/, Penn/' list
2.失误的命令
sed -e 's/MA/Mass' list 提示错误 标记搜索和替换命令末尾的斜杆丢失了。
3.脚本文件
sed -f scripfile file
$ cat sedscr
s/ ma/, mass/
s/ PA/, Penn/
sed -f sedscr list 读取sedscr 中所有替换命令,并讲这些命令应用于输入文件list中的每一行;显示屏幕上是临时的,输入文件并没有发生改变。
4.保存输出
sed -f sedscr list > newlist
5.阻止输入行的自动显示
sed 的默认操作是输出每个输入行。-选项可以阻止自动输出。当指定该选项时,
AWK基本使用
1. awk 'instruction' file 每次从一个或多个文件中读入一行或从标准输入一行读入一行。指令必须包含在单引号中,从而与shell区别开。
2.awk -f script files -f选项的工作方式与在sed中相同
实例包含单个指令,用于打印输入文件中每行的第一个字段
awk ‘{print $1}’ list
john
alice
3.“$1”表示每个输入行上的第一个字段的值,没有指定模式,所有打印语句应用与所有行。
awk ‘/MA/’ list
john MA,341 King Road, Plymouth MA
Eric Adams,20 Post Road, Sudbury MA
eric MA
4.打印三列,awk更像一种查询语音,从文件中提取有用的信息。
awk ‘/MA、 { print $1 }’ list
John
Eric
默认情况下,awk使用空格或制表作为字段分隔符讲输入分隔成字段。
5.使用-F选项讲字段分隔符改变为逗号。使我们能够检索3个字段中的任一个:全称 街道地址 或城市和州
awk -F, ' /MA/ { print $1 }' list
John Daggett
Eric Adams
Sal Carpenter
不要改变字段分隔符的-F选项与指定脚本文件名的-f选项弄混。
下一个示例将每个字段单独打印在这一行上。多重命令分号隔开。
awk -F, '{ print $1; print $2; print $3 }' l;ist
john Daggett
341 king Road
Plymouth MA
Alice Ford
22 East Broadway
出错信息
没有使用大括号({]) 讲过程括起来
没有用单引号('') 讲指令括起来
没有用斜杠(//)中将正则表达式括起来
6.选项总结
awk -f 跟随脚本的文件名
awk -F 改变字段分隔符
-v 跟随var=value
同时使用sed和awk