一般在实际使用编辑器的过程中 , 常需要执行替换文件中的字符串、移动、删除、与搜寻数据行等等动作。当然 , 一般交互式编辑器(如 vi、emacs)都能做得到上述功能 , 但文件一旦有大量上述编辑需求时 , 则用它们编辑十分没有效率。本文列举一些常用的sed的使用范例,以备不时之需。
替换数据
1.把开头/结尾为str1的行替换为str2:
sed -i 's/^str1.*/str2/' filename ###以str1开头
sed -i 's/.*str1$/str2/' filename ###以str1结尾
sed -i 's/.*str1.*/str2/' filename ###含有str1
2.将文件中含 "arr" 字符串的数据行中的 "str1" 字符串 , 替换成为 "str2" 字符串:
sed -e '/arr/s/str1/str2/g' filename ##含有g说明是全局替换
3.将文件中第 5 行数据 , 替换成句子"hello world!!!"
sed -e '5c\hello world!!!' filename
4.将文件中 1 至 100 行 , 替换成如下两行:
how are you?
my name is feige.
命令如下:
sed -e '1,100c\
How are you?\
my name is feige.
' filename
删除数据
1.删除空行:
sed -e '/^ *$/d' filename ### *号前面有一个空格符哦~
2.删除含有指定字符串str的行:
sed -f '/str/d' filename
移动数据
1.将文件中的前 100 数据 , 搬到文件中第 300 后输出。其命令如下:
sed -f mov.txt targetfile ## targetfile是要操作的文件,mov.txt里面放的是操作指令
其中mov.txt文档的内容为:
1,100{
H
d
}
300G
2.将from.txt文件中含 "phi" 字符串的数据行 , 移动到to.txt文件中储存。其命令如下:
sed -e '/phi/w to.txt' from.txt
3.将 from.txt文件内容 , 移动至to.txt文件中含 "beta" 字符串的数据行。其命令如下:
sed -e '/beta/r from.txt' to.txt
搜索数据
1.将文件中含 "omega" 字符串的数据输出:
sed -f grep.txt targetfile
其中grep.txt的内容如下:
/omega/b
N
h
s/.*\n//
/omega/b
g
D
今天就更新这么多,以后会在本文中不定期更新有用的sed相关命令。