如何在不知道该字符的情况下用 sed 替换文件中的最后一个字符

如何在不知道该字符的情况下用 sed 替换文件中的最后一个字符

我想替换文件中的最后一个字符。

  1. 我不知道那个角色是什么。
  2. 我只知道它的位置:文件末尾。

让我们生成一个文件,通过echo -n -e '1234\n5X78\nX' >> test.file它给出。

$ cat test.file
1234
5X78
X

最后一行没有换行符。

当我知道最后一个字符时,我知道如何替换它X

sed '$s/X/0/' test.file
1234
5X78
0

但正如我所说,我不知道最后一个字符。

答案1

使用 sed :

sed 's/.$/0/' test.file

定义.任何字符,并且$是行尾。因此,0在此示例中,您将替换每行的最后一个字符。

sed '$s/.$/0/' test.file

在您必须执行的操作之前添加$只会将该操作应用于最后一行。

答案2

这很简单,只需使用.$

sed '$s/.$/0/' test.file
  • .是“任意”字符。
  • $是该行的末端。

因此,您将替换最后一行末尾的最后一个字符。

相关内容