sed命令
1.d命令
命令d用于删除输入性。sed先将输入行从文件赋值到模式空间里。然后对该行运行sed命令,最后将模式空间里的内容显示在屏幕上。假设发出的是命令d。当前模式空间里的输入会被删除。不被显示。
sed '$d' datafile
#删除最后一行。其余的都被显示
sed '/my/d' datafile
#删除包括my的行,其余的都被显示
2. 基本sed编程举例
使用p(rint)显示行: sed -n '2p' temp.txt
仅仅显示第2行,使用选项n
打印范围: sed -n '1,3p' temp.txt 打印第1行到第3行
打印模式: sed -n '/movie/'p temp.txt 打印含movie的行
使 用模式和行号查询: sed -n '3,/movie/'p temp.txt 仅仅在第3行查找movie并打印
显示整个文件: sed -n '1,$'p temp.txt $为最后一行
随意字符: sed -n '/.*ing/'p temp.txt 注意是.*ing,而不是*ing
打印行号: sed -e '/music/=' temp.txt
附加文本:(创建sed脚本文件)chmod u+x script.sed,运行时./script.sed temp.txt
#!/bin/sed -f
/name1/ a/ #a/表示此处换行加入文本
HERE ADD NEW LINE. #加入的文本内容
插入文本: /name1/ a/ 改成 4 i/ 4表示行号,i插入
改动文本: /name1/ a/ 改 成 /name1/ c/ 将改动整行,c改动
删除文本: sed '1d' temp.txt 或者 sed '1,4d' temp.txt
替 换文本: sed 's/source/OKSTR/' temp.txt 将source替换成OKSTR
sed 's//$//g' temp.txt 将文本中所有的$符号所有删除
sed 's/source/OKSTR/w temp2.txt' temp.txt 将替换后的记录写入文件temp2.txt
替换改动字符串: sed 's/source/"ADD BEFORE" &/p' temp.txt
结果将在source字符串前面加上"ADD BEFORE",这里的&表示找到的source字符并保存
sed结果写入到文件: sed '1,2 w temp2.txt' temp.txt
sed '/name/ w temp2.txt' temp.txt
从文件里读文本: sed '/name/r temp2.txt' temp.txt
在每列最后加文本: sed 's/[0-9]*/& Pass/g' temp.txt
从 shell向sed传值: echo $NAME | sed "s/go/$REP/g" 注意须要使用双引號
打印范围: sed -n '1,3p' temp.txt 打印第1行到第3行
打印模式: sed -n '/movie/'p temp.txt 打印含movie的行
使 用模式和行号查询: sed -n '3,/movie/'p temp.txt 仅仅在第3行查找movie并打印
显示整个文件: sed -n '1,$'p temp.txt $为最后一行
随意字符: sed -n '/.*ing/'p temp.txt 注意是.*ing,而不是*ing
打印行号: sed -e '/music/=' temp.txt
附加文本:(创建sed脚本文件)chmod u+x script.sed,运行时./script.sed temp.txt
#!/bin/sed -f
/name1/ a/ #a/表示此处换行加入文本
HERE ADD NEW LINE. #加入的文本内容
插入文本: /name1/ a/ 改成 4 i/ 4表示行号,i插入
改动文本: /name1/ a/ 改 成 /name1/ c/ 将改动整行,c改动
删除文本: sed '1d' temp.txt 或者 sed '1,4d' temp.txt
替 换文本: sed 's/source/OKSTR/' temp.txt 将source替换成OKSTR
sed 's//$//g' temp.txt 将文本中所有的$符号所有删除
sed 's/source/OKSTR/w temp2.txt' temp.txt 将替换后的记录写入文件temp2.txt
替换改动字符串: sed 's/source/"ADD BEFORE" &/p' temp.txt
结果将在source字符串前面加上"ADD BEFORE",这里的&表示找到的source字符并保存
sed结果写入到文件: sed '1,2 w temp2.txt' temp.txt
sed '/name/ w temp2.txt' temp.txt
从文件里读文本: sed '/name/r temp2.txt' temp.txt
在每列最后加文本: sed 's/[0-9]*/& Pass/g' temp.txt
从 shell向sed传值: echo $NAME | sed "s/go/$REP/g" 注意须要使用双引號
3.基本sed编辑命令:
p 打印匹配行 c\ 用新文本替换定位文本= 显示文件行号 s 使用替换模式替换对应模式
a\ 在定位行号后附加新文本信息 r 从还有一个文本中读文本
i\ 在定位行号后插入新文本信息 w 写文本到一个文件
d 删除定位行 q 第一个模式匹配完毕后退出或马上退出
l 显示与八进制ASCII代码等价的控制字符 y 传送字符
n 从还有一个文本中读文本下一行,并附加在下一行 {} 在定位行运行的命令组
g 将模式2粘贴到/pattern n/