我有一个文本文件,其中有一行

sometext sometext sometext TEXT_TO_BE_REPLACED sometext sometext sometext

我需要将上面的整行替换为

This line is removed by the admin.

搜索关键字是text_to_be_replace

我需要为此写一个shell脚本。如何使用sed实现这一点?


当前回答

下面的命令对我有用。哪个是处理变量的

sed -i "/\<$E\>/c $D" "$B"

其他回答

在我的makefile中,我使用这个:

@sed -i '/.*Revision:.*/c\'"`svn info -R main.cpp | awk '/^Rev/'`"'' README.md

PS:不要忘记-i实际上改变了文件中的文本…因此,如果你定义为“Revision”的模式将改变,你也将改变模式来替换。

示例输出:

abc项目由John Doe撰写 修改:1190

因此,如果你设置模式“Revision: 1190”,这显然与你将它们定义为“Revision:”不同……

bash-4.1$ new_db_host="DB_HOSTNAME=good replaced with 122.334.567.90"
bash-4.1$ 
bash-4.1$ sed -i "/DB_HOST/c $new_db_host" test4sed
vim test4sed
'
'
'
DB_HOSTNAME=good replaced with 122.334.567.90
'

它运行正常

这和上面那个很相似。

sed 's/[A-Za-z0-9]*TEXT_TO_BE_REPLACED.[A-Za-z0-9]*/This line is removed by the admin./'

下面的命令对我有用。哪个是处理变量的

sed -i "/\<$E\>/c $D" "$B"
cat find_replace | while read pattern replacement ; do
sed -i "/${pattern}/c ${replacement}" file    
done 

Find_replace文件包含2列,c1为匹配模式,c2为替换,sed循环替换包含变量1的模式之一的每一行