今天遇到的源码使用了变态的宏,直接对参数进行宏处理,使得我的vim插件几乎全废,只能想办法将宏给替换进去。

#!/bin/bash

find  . -type f -name '*.c' | xargs sed -i 's/.P1(\(.*\),\(.*\))/(\1 \2)/g'

find  . -type f -name '*.c' | xargs sed -i 's/.P2(\(.*\),\(.*\),\(.*\),\(.*\))/(\1 \2,\3 \4)/g'

find  . -type f -name '*.c' | xargs sed -i 's/.P3(\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\))/(\1 \2,\3 \4,\5 \6)/g'

find  . -type f -name '*.c' | xargs sed -i 's/.P4(\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\))/(\1 \2,\3 \4,\5 \6,\7 \8)/g'

find  . -type f -name '*.c' | xargs sed -i 's/.P5(\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\))/(\1 \2,\3 \4,\5 \6,\7 \8,\9 \10)/g'

find  . -type f -name '*.c' | xargs sed -i 's/.P6(\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\))/(\1 \2,\3 \4,\5 \6,\7 \8,\9 \10,\11 \12)/g'

find  . -type f -name '*.c' | xargs sed -i 's/.P7(\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\),\(.*\))/(\1 \2,\3 \4,\5 \6,\7 \8,\9 \10,\11 \12,\13 \14)/g'

# 去掉PROT
find . -type f -name '*.c' | xargs sed -i 's/PROT((\(.*\)))/(\1)/g'

Sed是个好东西的更多相关文章

  1. Linux(3):linux目录结构

    查看系统版本: [root@neo ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@neo ~]# uname -r 2.6. ...

  2. 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od

    awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上.并且可以使用管道, input | awk ''  | output 1.首先要知道形式 awk 'command' fi ...

  3. Sed、Awk单行脚本快速参考

    文本间隔: # 在每一行后面增加一空行 sed G awk '{printf("%s\n\n",$0)}' # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本 ...

  4. Linux常用命令:sed

    本文记录的是自己在学习<Linux私房菜>中正则表达式的笔记. 关于行尾符$ 如果文件本身没有内容,比如使用touch新建的文件,那么$将会没有意义.例如下面操作: 先使用touch新建了 ...

  5. 【转】sed 简明教程

    本文转自:http://coolshell.cn/articles/9104.html awk于1977年出生,今年36岁本命年,sed比awk大2-3岁,awk就像林妹妹,sed就是宝玉哥哥了.所以 ...

  6. 运维工作中sed常规操作命令梳理

    sed是一个流编辑器(stream editor),一个非交互式的行编辑器.它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间",接着用sed命令处理缓冲 ...

  7. sed 4个功能

    [root@lanny test]# cat test.txt test liyao lanny 经典博文: http://oldboy.blog.51cto.com/2561410/949365 h ...

  8. [转载]sed 简明教程

    文章转载自酷壳 – CoolShell.cn,作者:陈皓,地址http://coolshell.cn/articles/9104.html awk于1977年出生,今年36岁本命年,sed比awk大2 ...

  9. fw:sed的高级用法

    转的,找不到原创了.... sed高级用法 <收藏> 首先,应该明白模式空间的定义.模式空间就是读入行所在的缓存,sed对文本行进行的处理都是在这个缓存中进行的.这对接下来 的学习是有帮助 ...

随机推荐

  1. iOS及Mac开源项目和学习资料【超级全面】

    UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITable ...

  2. [问题2014S10] 解答

    [问题2014S10]  解答 先证明一个简单的引理. 引理  设 \(\lambda_0\) 是 \(n\) 阶方阵 \(A\) 的特征值, 则对任意的正整数 \(k\), Jordan 块 \(J ...

  3. linux 修改home目录下的中文目录名为英文

    编辑home/下的 .config/user-dirs.dirs,把所有的中文名称修改为英文名称 在home目录下创建对应的英文名称路径 运行 xdg-user-dirs-update 重启机器

  4. JS事件委托学习(转)

    JS 事件委托就是利用冒泡原理,把事件加到父级上触发,执行效果. 好处: 1.提高性能 2.新添加的元素还会有之前的事件     <</</</</li></ ...

  5. 《BI那点儿事》数据流转换——条件性拆分

    根据条件分割数据是一个在数据流中添加复杂逻辑的方法,它允许根据条件将数据输出到其他不同的路径中.例如,可以将TotalSugar< 27.4406的输出到一个路径,TotalSugar > ...

  6. mmap()与munmap()的小例子

    mmap() 和 munmap() - Unix的系统函数,更贴近底层 void* mmap(void* addr,size_t size,int prot,int flags, int fd, of ...

  7. js处理iframe中子页面与父页面里面对象的取得的解决方案

    [1]子页面取得父页面的dom对象   parent.window.$('#id').val("");   [2]父页面取得子页面的对象   $(window.frames[&qu ...

  8. 编程之美----NIM游戏

    : 博弈游戏·Nim游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob.Alice与Bob总是在进行各种各样的比试,今天他 ...

  9. 转linq中的Single()、First()、Take(1) LINQ 标准的查询操作符 排序 orderby、thenby、Take

    Single():操作一个集合,同时强要求只有一个对象匹配,并返回这一个. First():操作一个集合,可以有多个对象匹配,但是只返回第一个. Take(1):操作一个集合,可以有对个对象匹配,单只 ...

  10. 使用NodeJS、GruntCLI遇到的问题

    运行环境CMD NODEJS版本v0.8.4  node --version 需求:需要用到Grunt的JS编译功能,各位别笑我. 使用代理 npm config set proxy http://i ...