2

假设我有一个文本文件,其中一些行是这种格式:

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

我想要实现的是:

  • 只触摸那些以 %attr 开头的行
  • 在每一行上找到“。*”的最后一次出现(包括引号)
  • 在最后一次将所有替换\/

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

4

2 回答 2

1

awk 可以轻松完成这项工作:

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

要更改原始文件:

awk -F '"' '/^%attr/ {gsub(/\\/, "/", $(NF-1))} 1' OFS='"' file > _tmp && mv _tmp file
于 2013-10-11T08:50:14.530 回答
0

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

于 2013-10-11T09:08:19.673 回答