替换>用“sed正则表达式

时间:2016-08-09 13:43:19

标签: regex bash sed

我有很多文件包含以下方式的行:

#include "3rd-party/*lots folders*>

问题是它以>而不是"

结尾

是否有快速正则表达式可以改变它?

基本上,如果该行以#include "3rd-party开头,则应将最后一个字符替换为"

提前致谢

3 个答案:

答案 0 :(得分:3)

您可以使用:

sed -i '' '/^[[:blank:]]*#include "3rd-party/s/>$/"/' file

#include "3rd-party/*lots folders*"

答案 1 :(得分:2)

基本上你可以使用:

sed '/^[[:space:]]*#include "3rd-party/s/>[[:space:]]*$/"/' file

说明:

  • /^[[:space:]]*#include/是一个地址,一个正则表达式地址。后续命令将应用于开始哪个可选空格后跟#include语句的行。
  • s/>[[:space:]]*$/"/>替换为可选空格,将行尾替换为"

如果要更改文件 ,请使用-i选项:

sed -i '/^[[:space:]]*#include/s/>[[:space:]]*$/"/' file

对于一大堆,我们说C个文件,请使用find及其-exec选项:

find . -name '*.c' -exec sed -i '/^[[:space:]]*#include/s/[[:space:]]*$/"/' {} \;

答案 2 :(得分:0)

您可以使用modernFilterApp.controller('mySvgController', ['$scope', function($scope){ $scope.init = function(){ $scope.textFonts = textConfigEnum.data; // Container for svg settings $scope.svgConfig = { text:'', textConfig: { fontFamily: $filter('getTextConfigByType')(textConfigEnum.info.Arial).fontFamily, fontSize: 20, fontDecoration: null, fontWeigth:null }, distance:{ X: 0, Y: 0 } }; }; $scope.init(); }]); 搜索模式并在此行上执行操作,例如

sed

您要执行的操作是使用sed '/search_pattern/{action}' your_file 替换行中的最后一个字符,其中>$是您想要的字符,>表示搜索到的字符必须放在最后一条线。

执行此操作的操作是$命令sed,其工作方式与s///类似。

这样可以找到您的目标:

s/search_pattern/replace_pattern/

但由于sed '/#include "3rd-party/{s/>$/"/}' your_file 是(s)tream(ed),因此您必须使用sed的命令标记sed来进行内联更改或使用-i进行管道更改到一个新文件。

喜欢这个

>

或者像这样

sed -i '/#include "3rd-party/{s/>$/"/}' your_file

如果这样做,请告诉我。