前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用sed命令批量处理Makefile文件的脚本

使用sed命令批量处理Makefile文件的脚本

作者头像
typecodes
发布2024-03-29 14:44:23
940
发布2024-03-29 14:44:23
举报
文章被收录于专栏:typecodestypecodes

前面写了一篇文章《Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile》,里面的Makefile代码有个不好的地方需要修改。当编译.cpp文件时,使用的STD_OPT变量仍然是编译.c文件时的参数-std=c99,这个在C++中是不支持的。

使用sed命令批量处理Makefile文件的脚本
使用sed命令批量处理Makefile文件的脚本
1 sed命令的简要说明

由于sed命令可用的参数太多了,这里只列举脚本中用到的几个参数:

1 2 3

sed -i:直接修改文件而不是将处理的结果在屏幕上输出; sed -e:多个操作action按顺序执行; sed -e '/help:/ a 要追加的内容':表示在help:文字后面追加内容。

2 具体代码

代码比较简单,直接执行命令./handle_makefile.sh即可。其中handle函数主要用到了正则替换,追加,删除这三个action操作。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

#!/bin/bash # FileName: handle_makefile.sh # Description: Simple usage of sed command to modify many Makefiles in batch processing. # Simple Usage: ./handle_makefile.sh # (c) 2016 vfhky https://typecodes.com/linux/handlemakefilebysed.html # https://github.com/vfhky/shell-tools/blob/master/filehandle/handle_makefile.sh # Dir to be handled. SRC_DIR="/home/vfhky/shell" # The makefile you want to modify. SEARCH_NAME="Makefile" #### # @param: $1 Name of the file #### function handle() { echo -e 'Handling file='$1'' sed -i \ -e 's/-std=c99 -D_GNU_SOURCE /-D_GNU_SOURCE/' \ -e 's/CC += $(STD_OPT)/CC += -std=c99 $(STD_OPT)/' \ -e '/help:/ a\ @echo CC=$(CC)\ @echo CXX=$(CXX)\ @echo CFLAGS=$(CFLAGS)\ @echo CXXFLAGS=$(CXXFLAGS)' \ -e '/ @echo STD_OPT=[$(STD_OPT)]/d' \ -e '/ @echo CFLAGS=[$(CFLAGS)]/d' \ $1 #echo "" | awk '{fflush()}' } # Get the target files you want to modify. ALL_MAKEFILE=$(find ${SRC_DIR} -type f -name ${SEARCH_NAME}) # Traverse the target files. for FILE in ${ALL_MAKEFILE} do handle ${FILE} if $? -gt 0 ; then echo 'failed.' #echo "" | awk '{fflush()}' fi done

3 脚本执行结果

如上图所示,脚本不断遍历src目录下的Makefile文件,然后进行处理。

脚本执行结果
脚本执行结果
4 脚本管理

目前已经把这个脚本放在Github了,地址是https://github.com/vfhky/shell-tools,以后脚本的更新或者更多好用的脚本也都会加入到这个工程中。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-06-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 sed命令的简要说明
  • 2 具体代码
  • 3 脚本执行结果
  • 4 脚本管理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档