2016-04-11 3 views
0

Я хочу заменить fw[" на fw..Найти и заменить - bash

Я пробовал пару команд sed, но не смог решить проблему.

Я попробовал cut command, tr и sed команды. Но поскольку символы, которые мне нравятся заменить, являются специальными символами, я получаю много ошибок.

Это мой вход:

endpoint.os.version="Windows 10" 
endpoint.fw["MSWindowsFW"].version="10.0" 
endpoint.av["AlwilAV"].version="11.1.2253" 
endpoint.os.hotfix["KB3116278"]="true" 

Это выход я хочу:

endpoint.os.version="Windows 10" 
endpoint.fw.MSWindowsFW.version="10.0" 
endpoint.av["AlwilAV"].version="11.1.2253" 
endpoint.os.hotfix["KB3116278"]="true" 

Можете ли вы помочь мне, чтобы написать такое преобразование?

+1

С какими вкладами вы работаете? Поток? Один или несколько файлов? Переменная? Короткий намек: побег (т. Е .: 'echo 'fw ["' | tr -d '["''). – bufh

+0

Привет! это всего лишь один файл имеет 4 строки (входы) – Bala

ответ

1

Предполагая file.txt:

endpoint.os.version="Windows 10" enter code here 
endpoint.fw["MSWindowsFW"].version="10.0" enter code here 
endpoint.av["AlwilAV"].version="11.1.2253" enter code here 
endpoint.os.hotfix["KB3116278"]="true" enter code here 

Как POSIX regular expressions are greedy, вы могли бы это сделать, как это с Perl:

perl -pe 's/fw\["(.*?)"\]/fw.\1/g' file.txt 

или в чистом SED:

sed 's/fw\["\([^"]*\)"\]/fw.\1/g' file.txt 

Примечание: Я рекомендую вам для использования https://regex101.com/ или https://www.debuggex.com/ для проверки, визуализации и понимания и что делает ваше регулярное выражение.

В противном случае вам просто нужно было избежать «специальных символов», которые будут интерпретироваться вашей оболочкой; в моих примерах я помещал их между одинарными кавычками, но вы могли бы сбежать от них (то есть: tr -d \[\" эквивалентно tr -d '["').

+0

Спасибо, что помогли мне. Он решает мою проблему, но он заменяет все ["на". ". Мне очень хочется заменить fw [" на fw. и оставить остальных, как это – Bala

+0

Отредактировано ... это соответствует вашей потребности сейчас? – bufh

+0

Действительно. Я получил то, что мне нужно. Благодарим вас за быстрый и лучший ответ. – Bala

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