Linux中sed命令的使用技巧
一、sed语法介绍
sed命令主要用于文本内容的编辑,默认只处理模式空间,不处理原数据。
命令格式:
sed [option] 'command' filename
示例:删除空白行 sed ‘/^\s*$/d’ filename
option 参数:
-n:只有经过sed特殊处理的那一行才会被列出
-e:直接在命令行模式上进行sed的动作编辑
-i:直接修改读取的文件内容,而不是输出到终端
command 参数
a:追加,可以接字符串
i:插入
d:以行为单位删除
c:以行为单位的替换
s:在行中搜索并替换
p:以行为单位的显示
二、实例介绍
2.1在文件file第四行后添加一行
Sed -e 4a\new/ line testline
其中:
-e:直接修改
4:第4行
a:追加
/:空格需要加反斜杠
2.2以行为单位的新增和删除
将testfile的内容列出并且列出行号,同时,将第2-5行删除。
nl testfile | sed ‘2,5d’
其中:
2,5:2到5
d:删除
nl:列出内容,并标注行号,空白行不标注
只删除第2行
nl testfile | sed ‘2d’
删除2到最后一行
nl testfile | sed ‘2,$d’
在第二行后(即第三行)加入hello;
nl testfile | sed ‘2a hello;’
在第二行前加入
nl testfile | sed ‘2i hello;’
增加两行以上
nl testfile | sed ‘2a hello;
hello’
注:必须使用\来进行新行标记
2.3以行为单位的替换和显示
nl testfile | sed ‘2,5c hello;’
注:将2到5行替换为一行hello
2.4数据的搜索和显示(以此显示行号)
nl testfile | sed -n‘hello;’
2.5数据的搜索和删除
nl testfile | sed ‘/oo/d’
2.6数据的搜寻和执行
nl testfile | sed -n ‘/oo/{s/oo/kk/;p/q}’
注:找到oo对应行,然后把oo改为kk
其中:p打印,q退出
2.7数据的查找和替换
Sed‘s/要被取代的字符串/新的字符串/g’ testfile
Sed -e‘s/oo/kk/g’ testfile
注:把oo替换为kk,并将该文件输出到标准输出,不修改原文件
-e输出
Sed -e‘s/oo/kk/’ testfile
注:把每行第一次出现的oo替换为kk,并将该文件输出到标准输出,不修改原文件
Sed -i‘s/oo/kk/g’ testfile
注:把oo替换为kk,并将该文件输出到标准输出,修改原文件
Sed -i‘s/oo/kk/g’ .txt
批量操作当前目录下所有.txt后缀文件
三、复杂实例
3.1将t1.txt文件每一行结尾为.则修改为!
Sed -i \s/.$/!/g t1.txt
注.记得加反斜杠
$表示结尾