老师,求9-5sed编辑命令详解的笔记
来源:9-5 sed中的编辑命令详解(中)
慕沐7261615
2022-02-16
老师,求9-5sed编辑命令详解的笔记,源代码文件中没有笔记!
1回答
-
酷田
2022-03-16
您好同学, 笔记如下:
对文件的操作,无非就是增加、删除、查询、修改;
编辑命令用法总结:
查询:
1、p -----------打印
删除:
2、d -----------删除
增加:
3、a -----------匹配到的行后追加内容
4、i -----------匹配到的行前追加内容
5、r -----------将后面指定文件的内容追加到匹配到的行后面
6、w -----------将匹配到的行内容另存到其他文件中
修改:
7、s/pattern/string/ ------------查找并替换,查找符合pattern模式的字符串,将其替换为string 适配(一、二、三、四、五)
s/pattern/string/g ------------g表示全部行内全部匹配
s/pattern/string/2g ------------2g表示,同一行内,只替换前2个匹配的,剩下的不替换
s/pattern/string/ig -------------加i参数表示匹配时忽略大小写,g表示匹配到的全部替换
其他编辑命令:
8、= -------------显示行号
什么是反向引用?
&和\1 引用模式匹配到的整个串
sed "s/l..e/&r/g" file 在file中搜寻以l开头,然后跟两个任意字符,以e结尾的字符串,在找到的字符串后加r字符(后向引用)
sed "s/\(l..e\)/\1r/g" file 和上面实现一样的功能,使用\1代表搜寻到的字符串
上面两种方式实现了一样的功能,分别使用&和\1引用前面匹配到的整个字符串
两者区别在于&只能表示匹配到的完整字符串,只能引用整个字符串;而\1可以使用()对匹配到的字符串进行分组,可以替换完整字符串,也可以替换子串,更加灵活
例如:如果我们仅想要替换匹配到的字符串的一部分,name必须使用\1这种方式,不能使用&。
查找test.txt文件中以l开头,紧接着跟两个任意字符,再接一个e的字符串。将找到的字符串中开头的小写l换成大写L
sed "s/l\(..e\)/L\1/g" test.txt
sed中引用变量时注意事项:
(1)、匹配模式中存在默认变量,则必须使用单引号
(2)、sed中需要引入自定义变量时,如果外面使用单引号,则自定义变量也必须使用单引号
00
相似问题