您的位置:首页 > 职场人生

sed和awk简明教程-面试

2015-05-13 20:18 309 查看
sed option script file

option : -e script -f file -n 分别表示从多行script多行输入、文件中获得输入和不要为每条命令生成输出,

等待print来输出。

-n表示不输出原来的问本行

script:

替代:

s/pattern/replacement/flags

flags:

/number如: sed‘s/test/tester/5’file1 表示将file1中的第5处的匹配位置.

/p 表示原来的行也输出

/w file 表示结果输出到file中

/g 表示替代所有已有文本出现的地方.

行寻址:

address command或者

address {

command1

command2

}

(1)数字寻址:address 可以使用单个数字或者num1,num2表示num1和num2行之间的部分.如

sed ‘2,$s/dog/cat’ animal.txt

(2)文本过滤器寻址

/pattern/command

表示只在匹配pattern模式的行执行command命令。

例子:

(1)将/etc/passwd文件中的/bin/bash替换成/bin/csh

sed -p ‘s!/bin/bash!/bin/csh!’ /etc/passwd

删除:d命令

sed ‘d’ data1 #删除data1所有行

sed ‘/1/,/3/d’ data1 #从匹配模式1的地方打开行删除功能,匹配模式2的地方关闭删除行功能.

插入和追加:

i和a命令:格式为:sed ‘[address]command\newline’

注意:插入总在数据流的前面,添加总在数据流的后面。

例子:

cat test |sed ‘$a\fsdf’

修改行:c命令。

sed ‘linenumc\sfafafa’ test

置换命令:y命令-唯一可以处理单个字符的sed编辑命令。

[address]y/inchars/outchars/

sed ‘y/123/789/’data8 将data8中所有的1置换成7 2置换成8 3置换成9

y命令为全局命令,无法控制只替代文档中的指定字符。

一些技巧:

打印命令:p打印文本行,=用于打印行号 l用来列出行

可以使用{}执行多条命令

如:

`sed -n ‘/num1/{

p

}`

注意:

sed 使用-i表示直接在文件中修改

sed 只有修改插入(i),添加(a),修改(c)命令式使用’\’作为分割

1 sed ‘s/^/#/’ data

在data每句行首加一个’#’

同理可以在行尾加#

2 sed ‘s!abc>!abd!’ test 表示只替代以abc结尾的abc字符成abd

^ 表示一行的开头。如:/^#/ 以#开头的匹配。

表示一行的结尾。如:/}/ 以}结尾的匹配。

\< 表示词首。 如 \
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sed