Linux之Shell编程(16)--sed关键字详解演示

Posted 菠萝印象威

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux之Shell编程(16)--sed关键字详解演示相关的知识,希望对你有一定的参考价值。

今天继续演示sed的其它用法。
-f:把多个子命令操作写入脚本文件,然后使用 -f 选项来指定该脚本

test.sh内容:
在这里插入图片描述
sed.sh内容:
在这里插入图片描述

注意:
脚本文件中的子命令串不需要输入单引号。

执行结果:
在这里插入图片描述

sed常用flags标记

g:对数据中所有匹配到的内容进行替换,如果没有 g,则只会在第一次匹配成功时做替换操作。(这部分已演示)

w: 将缓冲区中的内容写到指定的 file 文件中
data.txt内容:
在这里插入图片描述

结果:
在这里插入图片描述
运行后file.txt内容
在这里插入图片描述
可以发现,w的作用就是将符合指令变化的行的内容输出到另一个文件中,输出的文件为指令中的操作的文件,末尾的文件为原始文件。

注意:
1.sed ‘s/1/x/w file.txt’ data.txt
这条指令的意思是,将data.txt中经过处理变化(1变为x)后的行的内容,输出到file.txt中。
输出后,data.txt内容不变,file.txt会清掉原来内容,只会接收data.txt中变化后的行的内容。

指令前内容:
在这里插入图片描述
指令后内容
在这里插入图片描述
2.如果改为sed -i ‘s/1/x/w file.txt’ data.txt
结果如下
在这里插入图片描述
可以看到:data.txt中的内容也会改变,但file.txt依旧会先清除原始文件内容,再接收data.txt变化的内容。

r将一个文件的数据插入到当前数据流的指定位置

file.txt内容:
在这里插入图片描述
data.txt内容:
在这里插入图片描述
指令运行结果:
在这里插入图片描述
运行后的data.txt内容
在这里插入图片描述

注意:
sed -i ‘2r file.txt’ data.txt
这条指令的意思是,将file.txt中的内容输出到data.txt的第二行之后。不加-i不会改变data.txt文件内容。

以上是关于Linux之Shell编程(16)--sed关键字详解演示的主要内容,如果未能解决你的问题,请参考以下文章

Linux之Shell编程(14)--sed关键字详解演示

Linux之Shell编程(14)--sed关键字详解演示

Linux之Shell编程(15)--sed关键字详解演示

Linux之Shell编程(15)--sed关键字详解演示

linux12shell编程 --> 三剑客之sed命令

Shell编程之正则表达式(sed)