linuxshell编辑⽂件内容,Shell编辑与⽂本处理(Bashsed⽂本
编辑)
释放双眼,带上⽿机,听听看~!
1 sed 命令格式
sed 的全称是 stream editor,也就是流编辑器。其作⽤便是将⽂本⽂件或来⾃于管道符传⼊的输⼊流做⽂本的处理,如替换、增加内容、删除内容等等。
sed 命令基本格式:
sed [参数]… [执⾏命令] [输⼊⽂件]…
常⽤的参数:
执⾏命令的格式:
[n1][,n2]command
[n1][~step]command
其中 n1,n2 表⽰输⼊内容的⾏号,它们之间为 ,,如果为~波浪号则表⽰从 n1 开始以 step 为步进的所有⾏;command为执⾏动作,下⾯为⼀些常⽤动作指令:
2 sed 使⽤实例
1. 删除字符串
这⾥仍然使⽤上⼀节写的 txt 测试⽂档来演⽰,内容如下,可以使⽤实验桌⾯右边⼯具栏的剪切板拷贝到实验环境中:
$
为了让效果明显地看到,我们使⽤ nl 命令将 的内容与打印⾏号同时打印出来,同时利⽤ sed 将 2-5 ⾏删除显⽰:
$ | sed ‘2,5d’
命令解释:’2,5d’ 表⽰ 2~5 ⾏,d 表⽰删除。删除第13⾏到最后⼀⾏, $ 定位到最后⼀⾏:
linuxshell脚本怎么运行
$ | sed ’13,$d’
当然之前的操作都没有加 -i 参数,所以只是展⽰了效果但是没有修改原⽂,若是要在原⽂件中删除第 15 ⾏:
$ sed -i ’15d’
2. 添加字符串
在第⼆⾏后添加 test 字符串,a表⽰在⾏后添加⼀⾏加上字符串,i 表⽰在⾏前加⼀⾏添加字符串
例如:
$ | sed ‘2a test’
在第⼆⾏前添加⼀⾏插⼊ test 字符串:
$ | sed ‘2i test’
3. 替换字符串
将 2-5 ⾏内容取代为 blankspace
c 为替换内容选项。
$ | sed ‘2,5c blankspace’
4. 列出匹配字符
列出 内第 5-7 ⾏
sed 命令中 -n 为安静模式选项。以下两条命令执⾏结束后可对⽐结果。 $ |sed -n ‘5,7p’$ |sed ‘5,7p’
3 多重命令
如果我们需要同时执⾏多个操作,就要利⽤ sed 的多重命令特性了。
顾名思义,多重命令就是多个命令,它有如下⼏种使⽤⽅式。
我们先来新建⼀个实验⽂本 words,在⾥⾯输⼊如下内容,可以使⽤实验操作界⾯右边的⼯具栏中的剪切板将下⾯的⽂本内容贴⼊到实验环境中
$ vi words
syl
I hate wanneng
3.1 使⽤分号分隔命令
我们想把⽂本的 syl 修改成 wanneng,同时把 hate 修改成 love ,可以使⽤分号分隔命令:
如上所⽰,我们使⽤分号对命令进⾏了分隔。
3.2 使⽤ -e 参数
在 sed 命令中,还可以使⽤ -e 参数来执⾏多个命令:
$ sed -e ‘s/syl/wanneng/’ -e ‘s/hate/love/’ words
如上所⽰,多次使⽤ -e 参数我们可以引⽤多个执⾏命
令,从⽽达到我们的⽬的
3.3. 分⾏
除了使⽤分号,以及 -e 参数之外,还可以通过分⾏来编写多个命令,达到多重命令的效果,如下所⽰:
$ sed ‘ #按enter键
quote> s/syl/wanneng/
quote> s/hate/love/’ words
4. 脚本⽂件
在命令⾏输⼊较长的命令是不切实际的,我们可以通过在脚本⽂件中写⼊多个 sed 命令。最后再使⽤ s
ed 的 -f 参数去执⾏脚本⽂件中的命令,对⽬标⽂件进⾏处理。这其实也属于多重命令的⼀种应⽤⽅式。
4.1 语法
$ sed -f
scriptfile :脚本⽂件的名称。
file :待处理⽂件的名称。
4.2 应⽤
与在 多重命令 中的⽰例类似,可以通过编写脚本⽂件来达到同样的效果。
如下所⽰的 sed-script 脚本⽂件中的内容:
s/syl/wanneng/
s/hate/love/
使⽤ sed 命令的 -f 参数执⾏,结果如下。
sed -f sed-script words
除此之外,还可以像写 bash 脚本的格式去书写 sed 脚本,这时不需要使⽤ sed 命令,直接赋予脚本权限,执⾏脚本即可。
例如如下所⽰的 replace.sed 脚本⽂件的内容:
#!/bin/sed -f
s/syl/wanneng/
s/hate/love/
然后通过 chmod 命令为其添加权限后,运⾏结果如下图所⽰:
5. 寻址

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。