博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sed 小结
阅读量:4922 次
发布时间:2019-06-11

本文共 1315 字,大约阅读时间需要 4 分钟。

 

 语法格式1:

sed option command file

注意区分 option command,

option 以-开始

command 以单?引号包围    ———— 这完全是误会, 我测试好多后发现, 引起很多时候完全可以去掉,只有在当可能引起歧义的时候, 才需要引号

 command 里面的表达式默认格式为/re1/re2/

 

不同于tr的基于字符,它是基于字符串的,如

sed -i s'/vw/in/' temp.txt    就是说vw在作为一个元素来匹配的,然后整体替换为in

 

通过-i可以将替换写入temp.txt

 

sed  s'/^in.*/va/' temp.txt     表示以in开头,而不是以i或者n开头。

 

如果 * 前面不跟一个“.”,则表示对前面的字母的重复。

sed  s'/in*/va/' temp.txt 

 

从文件读入:r命令

  • $ sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。

写入文件:w命令

  • $ sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里。

追加命令:a命令

  • $ sed '/^test/a\\--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。

 

command 命令r w a 还是有些不懂

 

特别是有些command可以放在re1前面,又可以re2后面。

 

总结:

 

对应command,格式应该是

[scope]紧接operation+[pattern]     scope可选,如果没有scope则表示遍历所有行    紧接是说,不能有任何其他字符,包括空格(引号除外)    pattern可选,对某些操作是必须的

scope如何表示?

用行号表示:

1,3 第一到第三行

2,%第二到文尾

用正则表达式regx表示:

/hello/  所有包含hello的行

/^hello/   所有以hello开头的行

。。。

operation 有哪些:  

s 替换 格式固定为    s/reg1/reg2/

d删除  

a 追加 格式为 a\ sthnew 或者 ’a sthnew’

c\ 整行替换

w  

r  

i插入

= 列出行号

 

什么时候需要引号?

这个时候:

sed /temp/a\ sthnew sedtest.txt   不需要

如果sed /temp/’a sthnew‘ sedtest.txt  则需要, 因为a\ 变成了a

sed /temp/'w aa.txt' sedtest.txt  因为w aa.txt之间有空格  对于r参数也一样

 

 

参见

posted on
2014-04-21 18:25 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/FlyAway2013/p/3643646.html

你可能感兴趣的文章
015.现场.快用Scala(4月)
查看>>
看看已堕落的自己
查看>>
JavaScript的namespace
查看>>
关于分区索引与全局索引性能比较的示例
查看>>
移动端软件盘遮挡输入框问题
查看>>
pycharm(Tip of Day)
查看>>
[FJOI2016]建筑师(斯特林数)
查看>>
将计算机思维故事化——之操作系统典型调度算法
查看>>
0831 模糊查询,排序查询,聚合函数,时间日期函数,数学函数,字符串函数
查看>>
hive学习3
查看>>
Ubuntu12.10 Server 安装 VirtualBox-4.2.6 (64位) 过程详解
查看>>
11.5 正睿停课训练 Day16
查看>>
随机点名
查看>>
rbac 权限分配, 基于formset实现,批量编辑
查看>>
Asp.Net Web API VS Asp.Net MVC
查看>>
静态邻接表
查看>>
npm安装时提示没读写权限
查看>>
我感觉我要把大佬气死了
查看>>
变量名动态命名和调用
查看>>
看数组中是否存在一个数字,以及输入函数
查看>>