SED替换引号内的文本

时间:2013-10-11 08:41:35

标签: regex sed

假设我有一个文本文件,其中某些行具有以下格式:

%attr(750,user1,group1)  "/mydrive/mypath1/mypath2\winpath1\winpath2\file.xml"

我想要达到的目标是:

  • 仅触摸那些以%attr
  • 开头的行
  • 在每条这样的行上找到最后的“。*”(包括引号)
  • 在最后一次内部将所有\替换为/

sed 实用程序的正确语法是什么?

2 个答案:

答案 0 :(得分:1)

awk可以轻松完成工作:

awk -F '"' '/^%attr/ {gsub(/\\/, "/", $(NF-1))} 1' OFS='"' file

要更改原始文件:

awk -F '"' '/^%attr/ {gsub(/\\/, "/", $(NF-1))} 1' OFS='"' file > _tmp && mv _tmp file

答案 1 :(得分:0)

你可以尝试这个sed '/\%attr/{s/\\/\//g}'