2013-10-11 3 views
2

Предполагая, что у меня есть текстовый файл, в котором некоторые строки имеют следующий формат:SED заменить текст в кавычках

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

То, что я хочу достичь, это:

  • сенсорными только те строки, которые начинаются с% атр
  • на каждой из таких линий найти последний случаю «*» (включая кавычки)
  • внутри этого последнего случая заменить все \ к /

Что такое правильный синтаксис для СЭД утилиты?

ответ

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

Только строки, начинающиеся с '% attr', как это' awk -F \ "'/% attr/{gsub (/ \\ /,"/", $ (NF-1))} 1' file' – Jotne

+0

@ Jotne: Хорошо, я отредактировал ответ. – anubhava

+0

И он удаляет '' ' – Jotne

0

вы можете попробовать это sed '/\%attr/{s/\\/\//g}'

+0

Это изменение '\\' 'в любом месте строки, а не только в указанной области. '" ' – Jotne

Смежные вопросы