目录
基本语法
实战例
注意点
基本语法
sed -i "s/oldstring/newstring/g" `grep oldstring -rl path`
-i 表示inplace edit,就地修改文件
-r 表示递归式地搜索子目录
-l 表示输出匹配的文件名
oldstring:原字符串
newstring:要替换成为的新字符串
path:路径,可以是一个文件路径,也可以是一个目录路径
实战例
在myfolder有两组字符串需要替换:
(1) RTSEL(2'b01) --> RTSEL(2'b00);
(2) WTSEL(2'b01) --> WTSEL(2'b00);
首先,查询一下RTSEL的存在状况:
>> grep -rn "RTSEL" myfolder
myfolder/APERTURE_DATA_PREPARE.sv:73: .RTSEL(2'b01),
myfolder/APERTURE_DATA_PREPARE.sv:109: .RTSEL(2'b01),
myfolder/APERTURE_DATA_PREPARE.sv:145: .RTSEL(2'b01),
myfolder/CHROMA_DATA_PREPARE.sv:74: .RTSEL(2'b01),
myfolder/CHROMA_DATA_PREPARE.sv:111: .RTSEL(2'b01),
myfolder/CHROMA_DATA_PREPARE.sv:148: .RTSEL(2'b01),
myfolder/CHROMA_DATA_PREPARE.sv:185: .RTSEL(2'b01),
myfolder/LUMA_GEN.sv:85: .RTSEL(2'b01),
myfolder/LUMA_GEN.sv:122: .RTSEL(2'b01),
myfolder/LUMA_GEN.sv:159: .RTSEL(2'b01),
myfolder/LUMA_GEN.sv:196: .RTSEL(2'b01),
然后,执行sed + grep命令进行替换,并再次用grep搜索确认:
>> sed -i "s/WTSEL(2'b01)/WTSEL(2'b00)/g" `grep "WTSEL(2'b01)" -rl myfolder`
>> grep -rn "RTSEL" myfolder
myfolder/APERTURE_DATA_PREPARE.sv:73: .RTSEL(2'b00),
myfolder/APERTURE_DATA_PREPARE.sv:109: .RTSEL(2'b00),
myfolder/APERTURE_DATA_PREPARE.sv:145: .RTSEL(2'b00),
myfolder/CHROMA_DATA_PREPARE.sv:74: .RTSEL(2'b00),
myfolder/CHROMA_DATA_PREPARE.sv:111: .RTSEL(2'b00),
myfolder/CHROMA_DATA_PREPARE.sv:148: .RTSEL(2'b00),
myfolder/CHROMA_DATA_PREPARE.sv:185: .RTSEL(2'b00),
myfolder/LUMA_GEN.sv:85: .RTSEL(2'b00),
myfolder/LUMA_GEN.sv:122: .RTSEL(2'b00),
myfolder/LUMA_GEN.sv:159: .RTSEL(2'b00),
myfolder/LUMA_GEN.sv:196: .RTSEL(2'b00),
对WTSEL也依葫芦画瓢:
>> sed -i "s/WTSEL(2'b01)/WTSEL(2'b00)/g" `grep "WTSEL(2'b01)" -rl myfolder`
>> grep -rn "WTSEL" myfolder
myfolder/APERTURE_DATA_PREPARE.sv:74: .WTSEL(2'b00),
myfolder/APERTURE_DATA_PREPARE.sv:110: .WTSEL(2'b00),
myfolder/APERTURE_DATA_PREPARE.sv:146: .WTSEL(2'b00),
myfolder/CHROMA_DATA_PREPARE.sv:75: .WTSEL(2'b00),
myfolder/CHROMA_DATA_PREPARE.sv:112: .WTSEL(2'b00),
myfolder/CHROMA_DATA_PREPARE.sv:149: .WTSEL(2'b00),
myfolder/CHROMA_DATA_PREPARE.sv:186: .WTSEL(2'b00),
myfolder/LUMA_GEN.sv:86: .WTSEL(2'b00),
myfolder/LUMA_GEN.sv:123: .WTSEL(2'b00),
myfolder/LUMA_GEN.sv:160: .WTSEL(2'b00),
myfolder/LUMA_GEN.sv:197: .WTSEL(2'b00),
确实蛮灵嘎。。。
注意点
grep命令前后是一对“`”,不是单引号,是键盘左上角的那个!
sed命令中的oldstring和newstring不需要双引号围起来。
grep命令的字符串可用双引号“”围起来,也可以不用。文章来源:https://www.toymoban.com/news/detail-472610.html
文章来源地址https://www.toymoban.com/news/detail-472610.html
到了这里,关于linux中结合sed和grep的全局文本替换示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!