我有很多文件包含以下方式的行:
#include "3rd-party/*lots folders*>
问题是它以>
而不是"
是否有快速正则表达式可以改变它?
基本上,如果该行以#include "3rd-party
开头,则应将最后一个字符替换为"
。
提前致谢
答案 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
如果这样做,请告诉我。