我们简单地使用sed替换文本中的内容 sed 's/dog/elephon/' testfile,就是感觉匹配上就行,而不是按照单词分割。
s使用的方式,可以在后面添加flags操作,s/pattern/replacement/flags
- 数字,表明新文本将替换第几处模式匹配的地方
- g,表明新文本将会替换所有匹配的文本
- p,表明原先行的内容要打印出来;
- w file,将替换的结果写到文件中
比如sed 's/h/o/2' testfile
p操作使用-n选项,可以打印与替换命令模式匹配的行,sed -n 's/dog2/dophine/p' testfile
sed编辑器允许选择其他字符来作为替换命令中的字符串分隔符,sed -n 's!dog2!dophine!p' testfile 和上面的效果是一样的不然对于我们常常使用的正斜线(/),那么你就要写成(\/)这样的形式,还是挺头疼的。
如果只想将命令作用 于特定行或某些行,则必须用行寻址:
- 以数字形式表示行区间
- 用文本模式来过滤出行
sed编辑器会将文本流 中的第一行编号为1,然后继续按顺序为接下来的行分配行号
试试将第二行的数据修改了,sed '2s/h/o/' testfile
当然可以加上很多行的修改 sed '2,3s/h/o/' testfile
或者说想将命令作用到文本中从某行开始的所有行,使用美元符sed '2,$s/h/o/' testfile
sed编辑器允许指定文本模式来过滤出命令要作用的行,格式:/pattern/command
比如使用这样的 sed '/dog2/s/h/o/' testfile
当然更加牛逼的功能是使用正则表达式,来达到更好的模式匹配的效果,比如简单点 sed -n '/^The/s/h/o/p' testfile
未完待续!!!