首页 > 编程知识 正文

shell(shell脚本sed命令添加变量)

时间:2023-05-05 09:05:16 阅读:77826 作者:399

sed本身也是管道命令,可以分析标准输入。 sed可以替换、删除、添加数据、选择特定行等

前言

sed是流编辑器,是一个非常便于文本处理的工具,可以与正则表达式完全配合使用,功能非常好。 处理时,将当前处理中的行保存在临时缓冲区中。 称为“阵列空间”(pattern space ),然后使用sed命令处理缓冲区中的内容,并在处理完成后将缓冲区的内容发送到屏幕。 接下来处理下一行。 这样重复到文件的末尾。 除非使用重定向的存储输出,否则文件内容不会改变。 sed主要用于自动编辑一个或多个文件,简化文件的重复操作,创建转换程序等。

总结如下:

1、首先理解特殊字符:

^表示一行的开始。 /^#/这样以#开头的匹配。 $表示一行的结尾。 /}$/结尾的匹配等。 (表示词头。 (像abc那样表示以abc为首的语言。 (表示词尾。 像abc那样表示以abc结尾的语言。表示任意一个字符。 *表示字符出现了0次以上。 [ ]字符集。 例如,[abc]表示匹配a或b或c,[a-zA-Z]表示匹配所有26个字符。 其中有^表示反,如[^a]表示非a的文字注:与sed关系密切,可以使用很多正则匹配。

1、显示文件中的匹配行

cat tmp.txt|sed -n '/匹配字符正规/p'(-n不打印所有文件) )。

2、显示文件的第几行

cat tmp.txt|sed -n '1p' --第行-

cattmp.txt|sed-n ' 1,3p '-- 1至3行-

3、替换文件中的字符

将cat tmp.txt | sed 's/ee/ff/'或sed's/ee/ff/'tmp.txt--tmp.txt文件中每行第一个匹配的ee替换为ff,不更改原始文件

cat tmp.txt | sed 's/ee/ff/g '或sed's/ee/ff/g'tmp.txt--tmp.txt文件中的所有ee替换为ff,原始文件- -

更改原始文件: sed -i 's/ee/ff/' tmp.txt

4 .指定调换行

cattmp.txt|sed ' 3,5s/ee/ff/'--用ff替换文件中的3到5行ee

5、匹配线的更换

在cattmp.txt|sed '/^ w/s/ee/ff/'-- tmp.txt文件中,用ff--替换以w开头的行中的ee

cat tmp.txt | sed '/^w/,/^ x/s/ee/ff/'--用ff--替换文件中以w开头的行到以x开头的行的ee

6、文件名称批量更改示例中有文件。

aa.txt bb.txt cc.txt将其改名为aa.jpg bb.jpg cc.jpg

ls|sed's/(.*) ).txt/mv(1).txt )1).jpg/'|sh

()是内存空间,记录匹配的aa bb cc。 (1是内存空间的最初一致,生成mv的指令代码,在sh中执行---

7、删除匹配行---不显示,不修改源文件

仅删除第二行: $ sed '2 d' employee.txt

删除1至4行: $ sed ' 1,4d ' employee.txt

删除第二行到最后一行。 $ sed '2,$ d' employee.txt

仅删除奇数行: $ sed ' 1到2d ' employee.txt

删除包含“Manager”的所有行。 $ sed '/Manager/d' employee.txt

首先,将包含“Jason”的行删除到第4行。 $ sed '/Jason/,4 d' employee.txt

首先删除与“Raj”匹配的行到与“Jane”匹配的行。 $ sed '/Raj/,/Jane/d' employee.txt

删除与“Jason”匹配的行及其下面的两行。 $ sed '/Jason/,2 d' employee.txt

一些有用的删除示例

从一个文件中删除所有空行: sed '/^$/d' employee.txt

删除所有注释行(假设注释以#开头) (sed '/^#/d' employee.txt

虽然有点吵,但是没有波浪!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。