首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用sed和awk查找和替换字符串处理Makefile文件(一)

在《使用sed命令批量处理Makefile文件的脚本》文中使用sed命令对前文中的Makefile文件进行了替换、追加和删除操作,这篇文章通过使用sed和awk命令对该Makefile文件的某个字符串进行正则匹配查找以及替换...1 功能需求 由于之前在BZ自己CenOS7中的C/C++工程部分Makefile文件有问题(CC变量被赋值为CC := g++),所以想写个shell脚本批量把Makefile文件出错的部分全部替换成...在for ... in的Makefile文件遍历中,先利用了awk命令的正则匹配查找、替换操作,然后是sed命令执行正则匹配查找、替换操作。 程序难点应该在于对g++中的+号正则匹配。...awk的sub函数的正则替换时,需要对g++处理成g\+\+形式,而其它正常都写成g+\+的形式。...文件,然后先做正则查找测试,结果如下图所示: 4 Linux find 命令中正则 在find命令的某个参数使用正则,那么最好对这个对数加上双引号,正如上面的代码"${SEARCH_NAME}"所示,否则会出现下面的错误

27310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用sed和awk查找和替换字符串处理Makefile文件(三)

    在前文中演示了使用awk和sed命令正则查找和替换Makefile文件中的make clean操作规则:把-(RM) (ULT_BIN)和-(RM) (ULT_BIN)这两句写成一句-(RM) (ULT_BIN...) 1 具体功能需求 要实现的效果如果上图所示,左边表示之前的Makefile文件,右边是通过本次Shell脚本处理后的Makefile文件,红色部分就是需要点。...所以不会调用gen_depend包生成.d依赖文件了,而是按照默认隐含的gcc或者g++编译规则生成.o文件。...所以为了批量替换掉虚拟机中项目现有所有的Makefile文件,BZ选择用包含sed和awk命令的shell脚本来处理。...同前文的脚本框架一样,这里先使用for ... in的Makefile文件遍历中,然后利用了awk命令的正则匹配查找、替换操作,然后是sed命令执行正则匹配查找、替换以及追加操作。

    29310

    使用sed和awk查找和替换字符串处理Makefile文件(二)

    在前文中演示了使用awk和sed命令正则查找和替换Makefile文件的匹配内容,这篇文章依然使用这个Makefile文件作为awk和sed命令正则匹配查找、替换和删除操作。...1 功能需求 由于之前在BZ自己CenOS7中的C/C++工程部分Makefile文件在make clean操作时的语句可以优化,也就是可以把-(RM) (ULT_BIN)和-(RM) (ULT_BIN...在for ... in的Makefile文件遍历中,先利用了awk命令的正则匹配查找、替换操作,然后是sed命令执行正则匹配查找、替换以及删除操作。...SEARCH_NAME="Makefile*" # The maximum depth of the dirs where files such as Makefile you're dealing with...文件,然后先做正则查找测试,结果如下图所示: 4 Linux find 命令中正则 在find命令的某个参数使用正则,那么最好对这个对数加上双引号,正如上面的代码"${SEARCH_NAME}"所示,否则会出现下面的错误

    26910

    使用批处理根据项目工程文件生成Nuget包并发布(支持.NET Core)

    最近在使用之前自己编写的批处理给.NET Core项目打包时出问题了,发现之前的脚本根本不适用了,折腾了半天,总算解决了。因此在这里分享下经验,并且奉上整理好的脚本。...) :: 推送包 nuget push %nupkg% {your api key} -Source https://www.nuget.org/api/v2/package 如上所示,这里需要传入两个参数...如果是普通的.NET 库,我们可以在工程的AssemblyInfo.cs文件中设置: [assembly: AssemblyTitle("Magicodes.WeChat.SDK")] [assembly...: AssemblyDescription("Magicodes.WeChat.SDK为湖南心莱信息科技有限公司基于微信业务封装的工具包,以便更便捷更简单的调用和使用微信接口,以更好地和自己的业务结合。...目前,.NET Core类库通过批处理打包会出现包属性中文乱码的问题。 调用脚本 首先我们得确认目录结构和相关必须文件位置是否正确,如下所示: ?

    58730

    深度刨析makefile

    显示规则有 makefile 编写者显示写出。 ② 隐含规则 也就是依赖 makefile 中的自动推导功能,来自动推导出我们模糊表达的语句,比如根据文件后缀推导文件名等等。...因为大部分隐含规则都是使用了后缀规则来定义的,所以,只要隐含规则中有后缀列表,那么隐含规则就会生效。...另一种创建隐含规则的方式是后缀规则,其中,双后缀规则定义了一对后缀,目标文件的后缀和依赖文件的后缀,比如 .c.o 相当于 %o : %c ;单后缀规则只定义一个后缀,也就是依赖文件的后缀,比如 .c...(2)makefile 的出错控制函数 在 makefile 中有两个函数 error 和 warning 可以控制 make 运行过程中的出错处理。...但是有两个特殊变量 SHELL 和 MAKEFLAGS,这两个变量不管是否使用关键字 export 都会传递给下一级 makefile 文件。

    13210

    Linux 下的make命令与Makefile

    会自动包含“foo.d”和“bar.d”这两个makefile。...或是gz文件。 TAGS:这个伪目标功能是更新所有的目标,以备完整地重编译使用。 check和test:这两个伪目标一般用来测试makefile的流程。...一般是是源文件(或依赖文件),Make会根据规则推导来运行依赖于这个文件的命令,一般来说,可以和“-n”参数一同使用,来查看这个依赖文件所发生的规则命令。...用“后缀规则”来定义隐含规则会有许多的限制。使用“模式规则”会更回得智能和清楚,但“后缀规则”可以用来保证我们Makefile的兼容性。...请注意,在下面,我们没有提到后缀规则,原因是,所有的后缀规则在Makefile被载入内存时,会被转换成模式规则。

    10.2K20

    如何使用Makefile在Ubuntu上自动执行重复任务

    文件后缀规则 如果进行文件处理,可以使用的另一个功能是文件后缀。这些是一般规则,提供了一种基于扩展名处理文件的方法。...这告诉make我们将在文件后缀中使用的所有后缀。默认情况下包含一些常用于编译源代码的后缀,如“.c”和“.o”文件,不需要在此声明中标记。 下一部分是实际后缀规则的声明。...然后它将在目录中查找“.png”替换为“.jpg”的目标文件。然后它将执行后面的命令。 后缀规则使用了一些我们尚未介绍的变量。这些帮助根据当前流程的哪个部分替换不同的信息: $?...为了以理智的方式处理这些问题,我们可以将程序中的名称更改为.jpg文件,以便我们的处理行更简单: 我们将使用以下两个代替上述内容: JPEG=$(wildcard *.jpg *.jpeg) #...所有这些新目标都列出了我们收集的.png文件名作为要求。然后看看是否有一种方法可以获取.png文件并使用后缀规则来执行此操作。

    2.4K00

    【makefile】

    也就是Makefile中最核心的内容。 例如,假设有一个C源文件test.c,该源文件包含有自定义的头文件test.h,则目标文件test.o明确依赖于两个源文件:test.c和test.h。...GNU make 支持两种类型的隐含规则: (1)后缀规则(Suffix Rule)。后缀规则是定义隐含规则的老风格方法。...后缀规则定义了将一个具有某个后缀的文件 (例如,.c 文件)转换为具有另外一种后缀的文件(例如,.o 文件)的方法。...每个后缀规则以两个成对出现的后缀名定义,例如,将 .c 文件转换为 .o 文件的后缀规则可定义为: .c.o: $(CC) $(CCFLAGS) $(CPPFLAGS) -c -o $@ $Makefile中的函数 在Makefile中可以使用函数来处理变量,从而让命令或规则更为的灵活和具有智能,函数调用,很像变量的使用,也是以“$”来标识的,函数调用后,函数的返回值可以当做变量来使用

    2K00

    Linux makefile 教程 非常详细,且易懂

    而且,为了避免混乱,make不允许把整个条件语句分成两部分放在不同的文件中。 使用函数 ———— 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。...一般是是源文件(或依赖文件),Make会根据规则推导来运行依赖于这个文件的命令,一般来说,可以和“-n”参数一同使用,来查看这个依赖文件所发生的规则命令。...我们还可以通过“模式规则”的方式写下自己的隐含规则。用“后缀规则”来定义隐含规则会有许多的限制。使用“模式规则”会更回得智能和清楚,但“后缀规则”可以用来保证我们Makefile的兼容性。...后缀规则有两种方式:”双后缀”和”单后缀”。 双后缀规则定义了一对后缀:目标文件的后缀和依赖目标(源文件)的后缀。如”.c.o”相当于”%o : %c”。单后缀规则只定义一个后缀,也就是源文件的后缀。...后缀规则中所定义的后缀应该是make所认识的,如果一个后缀是make所认识的,那么这个规则就是单后缀规则,而如果两个连在一起的后缀都被make所认识,那就是双后缀规则。

    4.3K20

    Makefile经典教程(掌握这些足够)

    使用函数 ———— 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。...一般是是源文件(或依赖文件),Make会根据规则推导来运行依赖于这个文件的命令,一般来说,可以和“-n”参数一同使用,来查看这个依赖文件 所发生的规则命令。...我们还可以通过“模式规则”的方式写下自己的隐含规则。用“后缀规则”来定义隐含规则会有许多的限制。使用“模式规则”会更回得智能和清楚,但“后缀规则”可以用来保 证我们Makefile的兼容性。...为了和老版本的Makefile兼容,GNU make同样兼容于这些东西。后缀规则有两种方式:"双后缀"和"单后缀"。 双后缀规则定义了一对后缀:目标文件的后缀和依赖目标(源文件)的后缀。...后缀规则中所定义的后缀应该是make所认识的,如果一个后缀是make所认识的,那么这个规则就是单后缀规则,而如果两个连在一起的后缀都被make所认识,那就是双后缀规则。

    2.8K20

    Linux从入门到入土③(GCC、静态与动态链接库、Git、Make、Makefile)

    例如:生成可执行文件的目标文件(*.o)可以作为依赖使用如果规则的命令中不需要任何依赖,那么规则的依赖可以为空当前规则中的依赖可以是其他规则中的某个目标,这样就形成了规则之间的嵌套依赖可以根据要执行的命令的实际需求...-c b.c# 规则4c.o:c.cgcc -c c.c在这个例子中,如果执行 make 命令就会根据这个 makefile 中的 4 条规则编译这三个源文件。...make 命令执行的时候会根据文件的时间戳判定是否执行 makefile 文件中相关规则中的命令。...-c b.c# 规则4c.o:c.cgcc -c c.c根据上文的描述,先执行 make 命令,基于这个 makefile 编译这几个源文件生成对应的目标文件。...自动推导make 是一个功能强大的构建工具,虽然 make 需要根据 makefile 中指定的规则来完成源文件的编译。

    1.6K10

    实战Makefile前,该知道那些知识?

    make与make clean 生成目标文件规则(make命令): 执行make命令则会根据当前目录的Makefile文件定义的规则生成对应的目标文件。...清空目标文件的规则(make clean命令): 每个Makefile中都应该写一个清空目标文件( .o 和目标文件等)的规则,这不仅便于重编译,也很 利于保持文件的清洁。...: @cd /home/rice;pwd 结果: /home/rice 从上面两个例子可以证明命令依赖的规则。...这些变量可以让我们更加快速的完成Makefile的编写,其中自动变量只能在规则中的命令使用,常用的自动变量如下: $@:规则中的目标 $规则中的第一个依赖文件 $^:规则中的所有依赖文件 CC...提供了大量的函数,其中我们经常使用的函数主要有两个(wildcard,patsubst)。

    48920

    Makefile教程

    注意,字符串处理函数并不会改变原有的字符串,变量的替换引用规则也不会改变原来字符串。实际上变量的替换引用是模式匹配替换函数patsubst的一个简化实现。...原来这种是老式的“双后缀规则”,编译器会自动将Makefile所在目录的.cpp识别为源文件后缀,而.o识别为输出文件后缀。特别需要注意的是,后缀规则不允许任何依赖文件,但也不能没有命令。...后缀规则不允许任何的依赖文件,如果有依赖文件的话,那就不是后缀规则,那些后缀统统被认为是文件名,如: .c.o: foo.h $(CC) -c $(CFLAGS) $(CPPFLAGS...) -o $@ $< 综合来看,双后缀规则不太方便,建议还是放弃这种旧式写法。...8.小结 实际上,Makefile中还有很多基础知识点和复杂的特性并未在文中赘述,比如各种函数的用法、嵌套执行make、双后缀规则、定义命令包等,这些需要我们在实际使用过程中去熟悉掌握。

    4.1K53

    Make

    执行make命令需要一个Makefile文件,来定义整个项目的编译规则。makefile定义了模块间的依赖关系,指定文件的编译顺序,以及编译所使用的命令。...###二、Make的一般使用: 1、Makefile的基本构成: Makefile由规则构成,一条规则生成一个或多个目标文件,其格式如下: 目标文件列表 分隔符 依赖文件列表 [;命令] //[]中的内容可选...有些规则没有命令,只是说明文件之间的依赖关系。 隐含规则:由make根据目标文件而自动推导出的规则。...文件指示:包括三个部分,一个类似于c语言中的include语句,可以将另一个makefile文件包含进来;二是根据情况指定makefile中的有效部分,就像c语言中的预编译#if一样;三是定义一个多行的命令....SUFFIXES:该目标的依赖被认为是一个后缀列表,在检查后缀规则时使用。 .SILENT:生成该目标文件的依赖文件所执行的命令都不被打印,如果其后无依赖文件,则所有的命令都不会被打印。

    2K100

    6_Makefile与GCC

    预处理就是将要包含(include)的文件插入原文件中、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些东西输出到一个“.i”文件中等待进一步处理。...编译器利用这4个步骤中的一个或多个来处理输入文件,源文件的后缀名表示源文件所用的语言,后缀名控制着编译器的缺省动作 后缀名语言种类后期操作.cC源程序预处理、编译、汇编.CC++源程序预处理、编译、汇编...gcc根据选项的规则将输入文件编译生成适当的输出文件。 ​ gcc的选项非常多,常用的选项,它们大致可以分为以下几类 。...预处理就是将要包含(include)的文件插入原文件中、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些东西输出到一个“.i”文件中等待进一步处理。...6.4.3 Makefile的规则 6.4.3.1 命名规则: ​ 一般来说将Makefile命名为Makefile或makefile都可以,当很多源文件的名字是小些,所以一般使用Makefile。

    3.6K10

    Make 命令教程

    比如,假设文件 a.txt 依赖于 b.txt 和 c.txt ,是后面两个文件连接(cat命令)的产物。那么,make 需要知道下面的规则。...总之,make只是一个根据指定的Shell命令进行构建的工具。它的规则很简单,你规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。...二、Makefile文件的格式 构建规则都写在Makefile文件里面,要学会如何Make命令,就必须学会如何编写Makefile文件。...2.1 概述 Makefile文件由一系列规则(rules)构成。每条规则的形式如下。...f1.o: f1.c f2.o: f2.c 使用匹配符%,可以将大量同类型的文件,只用一条规则就完成构建。 3.5 变量和赋值符 Makefile 允许使用等号自定义变量。

    2K40

    Makefile && CMake 简单入门

    第三行表示将当前目录中的符合 .cpp 后缀的文件都放到 SRC 变量中;而第四行使用 patsubst 表示将 SRC 变量中的 .cpp 后缀都改为 .o,这样子一来就相当于帮我们处理完了 .o 文件了...遇到的问题 两种生成规则的区别 ​ 第一个 Makefile 的规则如下: $(OBJ) : $(SRC) $(CC) $(CFLAGS) -o $@ -c $< ​ 这个规则使用了 文件中的第一个文件...,即 ​ 而第二个 Makefile 的规则如下: $(OBJDIR)/%.o : $(SRCDIR)/%.cc $(CC) $(CFLAGS) -o $@ -c $< ​ 这个规则使用了 模式匹配...这样,对于每个源文件,该规则都会生成对应的目标文件,并将其放到指定的目录中。 ​ 因此,第二个 Makefile 的规则更加准确和合理,可以正确地根据每个源文件生成对应的目标文件。...而第一个 Makefile 在处理多个源文件时存在问题,只会使用第一个源文件生成所有目标文件,这是不正确的。 ​ 所以,第二个 Makefile 是正确的形式,建议使用该形式来生成目标文件。

    7610

    浅谈 Make 命令

    比如,假设文件 a.txt 依赖于 b.txt 和 c.txt ,是后面两个文件连接(cat命令)的产物。那么,make 需要知道下面的规则。...总之,make只是一个根据指定的Shell命令进行构建的工具。它的规则很简单,你规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。...二、Makefile文件的格式 构建规则都写在Makefile文件里面,要学会如何Make命令,就必须学会如何编写Makefile文件。...2.1 概述 Makefile文件由一系列规则(rules)构成。每条规则的形式如下。...f1.o: f1.c f2.o: f2.c 使用匹配符%,可以将大量同类型的文件,只用一条规则就完成构建。 3.5 变量和赋值符 Makefile 允许使用等号自定义变量。

    1.3K10
    领券