如何替换包含方括号的字符串

时间:2019-10-30 08:23:50

标签: regex bash sed

请帮帮我。 有一个带有这样的字符串的文件:

<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 :(得分:0)

编辑: :要查找特定的字符串,然后使用以下命令更改行。

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