`tr` 替換的內容超出了我的預期

`tr` 替換的內容超出了我的預期

我有大量教學工作中的文件,我想將它們定期備份到 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您在全域範圍內使用了 actions ,所以我假設這就是您通常想要的(對於這個特定的 string 並不重要foo bar .pdf)。

相關內容