Как заменить строку, содержащую квадратные скобки - PullRequest
0 голосов
/ 30 октября 2019

Помогите мне, пожалуйста. Есть файл с такими строками:

<b>[source:1:2:3]</b>
<b>[source:2:3:1]</b>
<b>[source:3:1:2]</b>
<b>[source:1:3:2]</b>

Мне нужно преобразовать только одну строку из этого файла. В результате должен получиться такой файл:

<b>[source:1:2:3]</b>
<b>[source:2:3:1]</b>
<b>[result:3:1:2]</b>
<b>[source:1:3:2]</b>

Сломал голову, пытаясь убежать [с помощью sed :( Вероятно, должно быть что-то вроде этого:

cat test.txt |sed "s,<b>\[source:3:1:2\]</b>,<b>\[result:3:1:2\]</b>,g"

1 Ответ

0 голосов
/ 30 октября 2019

РЕДАКТИРОВАТЬ: Чтобы найти конкретную строку, а затем изменить строку, используйте следующее.

awk -v old_string="source" -v new_string="result" '/<b>\[source:3:1:2\]<\/b>/{sub(old_string,new_string)} 1' Input_file

ИЛИ, чтобы сохранить результаты в тот же файл Input_file, а затем попробуйте выполнить следующее.

awk -v old_string="source" -v new_string="result" '/<b>\[source:3:1:2\]<\/b>/{sub(old_string,new_string)} 1' Input_file > temp && mv temp Input_file


Если вы в порядке с awk, попробуйте следующее.

awk 'FNR==3{sub(/source/,"result")} 1'  Input_file

ИЛИ, если вы хотите, чтобы переменные текущих и новых значений были в awk код, затем попробуйте следующее.

awk -v old_string="source" -v new_string="result" 'FNR==3{sub(old_string,new_string)} 1' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...