如何用UNIX中的另一个字符串替换文本文件中一行末尾的字符串?

时间:2014-01-28 22:43:07

标签: linux unix text-files

我必须在文本文件中将字符串“.htm”替换为“.html”,如果它放在行尾。我应该使用 sed 但我不知道如何使用它。我尝试使用 grep 但是没有用。

3 个答案:

答案 0 :(得分:2)

使用此:

sed 's/\.htm$/.html/' file

只要跟随行尾(.htm),它就会查找$(必须转义点)。在这种情况下,它将其替换为.html

如果您想进行就地编辑,请添加-i选项:

sed -i.bak 's/\.htm$/.html/' file

这将创建备份file.bak,同时将使用新数据修改原始文件。

实施例

$ cat a
hello this is.htm
hello this is.htm blabla
hello this ishtm
hi!
$ sed 's/\.htm$/.html/' a
hello this is.html
hello this is.htm blabla
hello this ishtm
hi!

答案 1 :(得分:0)

sed -e 's/\.htm$/\.html/' < foo

假设foo是您要操作的文件。我们将输出标准输出,将其重定向到有用的地方。

答案 2 :(得分:0)

或执行以下操作:

1)在vi编辑器中打开文件:vi filename 2)进入命令模式:按: 3)键入以下命令并按Enter:1,$ s / .htm $ / .html /

正如其他帖子所建议的那样,使用sed命令可以获得相同的结果,但在这种情况下,您无法在现有文件中进行更改。 Instaed您必须创建一个新文件。使用上述解决方案,您可以在现有文件中进行更改。

希望有所帮助!!