sed

来源:互联网 发布:华晨宇 淘宝 编辑:程序博客网 时间:2024/03/29 19:52

find . -name "*.c" -type f -perm 644 -exec sed -i 's/ret = logInit(filepath)/ret = logInit(filepath);/g' {} /;----加分号

 

 

 sed -i 's/]: T"/]: T//n"/g' myfile.c  ------在T后面加字符串“/n”;如果就是要加个回车,让T和”用回车分开,就不用“//n”,只要"/n"即可

 

 

看看sed -h里面是什么呢?

sed: invalid option -- h
用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...

  -n, --quiet, --silent
                 取消自动打印模式空间
  -e 脚本, --expression=脚本
                 添加“脚本”到程序的运行列表
  -f 脚本文件, --file=脚本文件
                 添加“脚本文件”到程序的运行列表
  -i[扩展名], --in-place[=扩展名]
                 直接修改文件(如果指定扩展名就备份文件)
  -l N, --line-length=N
                 指定“l”命令的换行期望长度
  --posix
                 关闭所有 GNU 扩展
  -r, --regexp-extended
                 在脚本中使用扩展正则表达式
  -s, --separate
                 将输入文件视为各个独立的文件而不是一个长的连续输入
  -u, --unbuffered
                 从输入文件读取最少的数据,更频繁的刷新输出
      --help     打印帮助并退出
      --version  输出版本信息并退出

如果没有 -e, --expression, -f 或 --file 选项,那么第一个非选项参数被视为
sed脚本。其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准
输入读取数据。

将错误报告通过电子邮件发送到:bonzini@gnu.org .
请务必将单词“sed”放在标题的某处。

 

sed -i '1,4d' *.c-----------------将c文件的第1行到第4行删除----直接在本文件删除!加上“-i”选项是直接在本文件删除,不加'-i'的话原文件不会改变。

 

有关sed的link:

http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-2/index.html

 

 

 sed -i '1 i/  Insert as Line 0' test2.txt----在test2.txt的第一行前面插入“(这里有两个空格了哦)  Insert as Line 0”

 

 

 sed -i '1,3 i/Intest Line 1-3' test2.txt----在test2。txt的第1至3行处插入

 

 

 sed -i '/This is the last Line/i/This is Line 3' test2.txt----在有“This is the last Line”的这一行前面加上“This is Line 3”

 

 sed -i '/This is Line 4/d' test2.txt--删除有“This is Line 4”这一行

 

 sed -i '/This is the last Line/i/This is Line 7./n / This is Line 8./n / This is Line9.' test2.txt ---------------添加3行,如果写在脚本里就直接在脚本里用enter换行,不用写/n

 

 

从文件读入:r命令
  • $ sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。

写入文件:w命令
  • $ sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里。

追加命令:a命令
  • $ sed '/^test/a//--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。


转自:http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/sed.htm#id2808439

 

 

 

sed -i -e '/Line6/h' -e '$G' test2.txt -----在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配Line6的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含Line6的行都被复制并追加到该文件的末尾。

 

下一行:n命令

 sed '/Line 8/{n; s/Line9/Line 9/; }' test2.txt -----如果Line 8被匹配,则移动到匹配行的下一行,替换这一行的Line9,变为Line 9,并打印该行,然后继续。

 

--------------------------------------------------------------------------------------------------------------------------------------------

sed ':a;N; s//n//g; ta'  test.txt-------将test.txt文件的换行符删掉,N表示把下一行合并到上一行,用一个N表示每两行合并,两个N(N;N;)表示每三行合并,这里用了标签a,最后再ta(跳转到标签a),表示一直这样两行合并一次,直到只剩下一行,-----------如果将其写在python文件中要将转义符/n写成//n哦

 

sed 's/[[:space:]]//g ' test.txt-------删除空格和tab键

 

sed -i '176,227 s/^[[:space:]]*//g' addsearch2.py----------将176行到227行中找出以一个或多个space/tab开始的,兵将这些tab/space键删除

 

 sed -i '14,22 s/^/#/g' test1.py----------将14到22行用#注释掉

原创粉丝点击