我有很多教学工作的文件,我想定期备份到 OneDrive 中。我的同事不擅长命名文件,所以他们需要清理一下,以便 OneDrive 能够接收这些文件。
我无法理解的是如何选择句号前的空格。
我正在尝试
bash-3.2$ echo "foo bar .pdf" | tr -s " \." '\.'
并得到这个
foo.bar.pdf
而不是foo bar.pdf
。我的命令有什么问题?
答案1
tr
取代单身的字符替换为单个字符,并告诉它用点替换每个空格和每个点(除了-s
将空格+点压缩为单个实体进行替换)。换句话说,一个空格或点就足以触发你的tr
。
要替换字符串,请使用sed
:
echo "foo bar .pdf" | sed 's/ \././g'
注意:我使用是g
因为tr
您在全球范围内使用了行为,所以我假设这是您通常想要的(对于这个特定的字符串来说这并不重要foo bar .pdf
)。