linux之sed使用技巧
选择第5行> sed -n "5p" rumenz.txt 选择2到5行,共4行> sed -n "2,5 p" rumenz.txt > sed -n "2,+3 p" rumenz.txt 选择奇数行> sed -n "1~2 p" rumenz.txt 选择偶数行> sed -n "2~2 p" rumenz.txt 从第2行开始打印到文本最后> sed -n "2,$ p" rumenz.txt 选择rumenz字样的行,以及后面的3行。> sed -n "/rumenz/,+3 p" rumenz.txt 选择以rumenz开头的行,和出现zhan字样行之间的数据> sed -n "/^rumenz/,/zhan/ p" rumenz.txt
p意思就是打印删除第2行到第5行的数据> sed "2,5 d" rumenz.txt
注意:上面没有加-i的参数,只是在终端上删除,原文件并没有被操作删除第2行到第5行的数据。将第2行到第5行的数据保存到1.txt> sed -n "2,5 w 1.txt" rumenz.txt 选择以rumenz开头的行,和出现zhan字样行之间的数据,并将a替换成b> sed -n "/^rumenz/,/zhan/s/a/b/g" rumenz.txt 选择rumenz字样的行,以及后面的3行,并将a全替换成b> sed "/rumenz/,+3 s/a/b/g" rumenz.txt 将rumenz.txt文本中的a替换成b并写入到2.txt文件> sed -n "s/a/b/gipw" rumenz.txt 正则转义
由于正则的关系,很多字符需要转义。你会在脚本里做些很多,*之类的处理。你可以使用|^@!四个字符来替换> sed "/aaa/s//etc//usr/g" rumenz.txt > sed "/aaa/s@/etc@/usr@g" rumenz.txt > sed "/aaa/s^/etc^/usr^g" rumenz.txt > sed "/aaa/s|/etc|/usr|g" rumenz.txt > sed "/aaa/s!/etc!/usr!g" rumenz.txt
以上5条命令是等价的备份源文件替换> sed -i.bak "s/a/b/g" rumenz.txt > ls rumenz.txt.bak rumenz.txt 输出长度不小于50个字符的行> sed -n "/^.{50}/p" 查找目录中的php文件,删掉所有行级注释> find . -name "*.php" | xargs sed -i.bak "/^[ ]*#/d" 以first开头end结尾的所有行全部打印> sed -n "/^first.*end$/p" rumenz.txt 从第2行到最后一行都追加rumenz> sed "2,$ s/$/rumenz/" rumenz.txt 从第2行到最后一行前面都加rumenz> sed "2,$ s/^/rumenz/" rumenz.txt 查看非连续的线和范围> sed -n -e "2,5p" -e "4,9p" rumenz.txt 删除注释> sed "/^#|^$| *#/d" rumenz.txt 将文件中zip,Zip统一替换成rar> sed "s/[zZ]ip/rar/g" rumenz.txt 一次进行两个或多个取代> sed -i "s/that/this/gi;s/line/rumenz/gi" rumenz.txt 删除文件的最后一行> sed "$d" rumenz.txt 将rumenz.txt文本中以rumenz开头的行保存到1.txt文件> sed -n "/^rumenz/w 1.txt" rumenz.txt
原文链接:https://rumenz.com/rumenbiji/linux-sed-skills.html