Linux中的sed行末/前一行/后一行追加字符
作者:刘瑾言
这篇文章主要介绍了Linux中的sed行末/前一行/后一行追加字符,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
sed行末/前一行/后一行追加字符
sed命令 | ||
sed "/string/s/.*/&ttt/" file | 匹配行后面追加字符串 | |
sed "4i\ttt" file | 第四行的前面加一行 | |
sed "4a\ttt" file | 第四行后面加一行 | |
sed -e "s/aaa/bbb/g" -e "s/bbb/ccc/g" | 多个命令拼接 | |
sed "4d" file | 删除第四行 | |
sed -i "4d" file | 在文件里面修改需要加上i | |
sed -n "4,$p" file | 打印第四行到末尾行 | |
sed "4s/aaa/bbb/" file | 将第四行的aaa替换为bbb | |
sed -i '$a \aaaa' file | 在文末新增一行aaaa |
linux sed命令
sed
是stream editor
的简称,也就是流编辑器。
可以接受来自文件或者来自管道的流。
其语法格式为:
sed OPTIONS... [SCRIPT] [INPUTFILE...]
常用选项(OPTIONS)
-n
使用安静silent
模式。在一般sed
的用法中,所有来自stdin
的内容一般都会被列出到屏幕上。但如果加上-n
参数后,则只有经过sed
特殊处理的那一行(或者动作)才会被列出来-e
直接在指令列模式上进行sed
的动作编辑-f
直接将sed
的动作写在一个文件内,-f filename
则可以执行filename
内的sed
命令-r
让sed
命令支持扩展的正则表达式(默认是基础正则表达式)-i
直接修改读取的文件内容,而不是由屏幕输出
实例:
假如我们有文件foxinbox.txt, 内容如下:
Knox in box. Fox in socks. Knox on fox in socks in box. Socks on Knox and Knox in box. Fox in socks on box on Knox.
1、替换字符串:
sed 's/old_string/new_string/flags' filename.txt
note:默认情况下, sed
命令只处理每一行的第一个匹配字符。 如果需要全部匹配的话,加上g参数即可。表示全局替换
note:替换每一行的第n次匹配字符。后面添加数字即可,数字表示第n次匹配。add a number flag such as 1
, 2
, etc.:
例如只匹配第二次出现的box
sed -i 's/1883/8883/' file.json
将file.json文件中的1883字符串替换为8883
查找file.json文件中 url字符串所在的行,只打印行号
line=$(grep -n "url" file.json | busybox awk -F ":" '{print $1}') echo $line
将filename文件中,字符串"url"所在的一整行替换为this is replace line
sed -i '/url/c\ this is replace line' filename
这个文件有非常多的:作为分隔符,我们想更加直观地查看,
sed 's/:/\t/g' /etc/passwd
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。