我有一个文本文件,其中有一行
sometext sometext sometext TEXT_TO_BE_REPLACED sometext sometext sometext
我需要将上面的整行替换为
This line is removed by the admin.
搜索关键字是text_to_be_replace
我需要为此写一个shell脚本。如何使用sed实现这一点?
我有一个文本文件,其中有一行
sometext sometext sometext TEXT_TO_BE_REPLACED sometext sometext sometext
我需要将上面的整行替换为
This line is removed by the admin.
搜索关键字是text_to_be_replace
我需要为此写一个shell脚本。如何使用sed实现这一点?
当前回答
我经常使用regex从文件中提取数据,我只是用它来替换文字引号\"与// nothing:-)
cat file.csv | egrep '^\"([0-9]{1,3}\.[0-9]{1,3}\.)' | sed s/\"//g | cut -d, -f1 > list.txt
其他回答
您可以使用change命令替换整行,并使用-i标志进行适当的更改。例如,使用GNU sed:
sed -i '/TEXT_TO_BE_REPLACED/c\This line is removed by the admin.' /tmp/foo
这招对我很管用:
sed -i <extension> 's/.*<Line to be replaced>.*/<New line to be added>/'
一个例子是:
sed -i .bak -e '7s/.*version.*/ version = "4.33.0"/'
-i:替换后备份文件的扩展名。在本例中,它是.bak。 -e: sed脚本。在本例中,它是'7s/.*版本。*/ version = "4.33.0"/'。如果您想使用sed文件,请使用-f标志 s:要替换的文件中的行号。在本例中,它是7s,也就是第7行。
注意:
如果你想做一个递归查找和替换sed,那么你可以grep到命令的开头:
grep -rl --exclude-dir=<directory-to-exclude> --include=\*<Files to include> "<Line to be replaced>" ./ | sed -i <extension> 's/.*<Line to be replaced>.*/<New line to be added>/'
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/.*TEXT_TO_BE_REPLACED.*/This line is removed by the admin./'
这和上面那个很相似。
sed 's/[A-Za-z0-9]*TEXT_TO_BE_REPLACED.[A-Za-z0-9]*/This line is removed by the admin./'