删除单词中的最后一个字符,但前提是该字符存在 - 在 bash 中

rem*_*ere 13 grep sed text-processing

仅当它存在时如何删除最后一个字符?

输入:

OpenOffice.org/m
openOffice.org/ozm
佩斯。
Pfg。
菲尔。
教授。
分别
伦斯特/米
roonstr./ozm

所需的输出:

OpenOffice.org
openOffice.org
个人
粉煤灰
菲尔
教授
分别
朗斯特
伦斯特

到目前为止,我只剩下点,但不幸的是最后一个 sed 命令也删除了字母g$ cat filename | grep "\." | cut -d"/" -f1 | sed 's/.$//'

rus*_*ush 13

你只需要在你的sed命令中转义点,一切都会好起来的。像这样:

sed 's/\.$//'
Run Code Online (Sandbox Code Playgroud)

因为在您不转义它的情况下,.$将匹配字符串末尾的任何字符。

你也可以把你所有的sed+ grep+cut到只有一个sed

sed 's=/[^/]*$==;s/\.$//' filename
Run Code Online (Sandbox Code Playgroud)