2017-02-17 50 views
2

我有一個示例代碼,似乎是一塊額外的格式的上漲到一些文字處理結束:tr -d [=,=]做什麼?

tr -d [=,=] 

我不知道這是什麼一樣和tr的手冊頁的小幫幫我。對此有何看法?

+4

我喜歡[=,=] –

+0

順便說一句,表達應該被引用以''[=,=]''命名 - 否則在調用'tr'之前shell可以用一個文件名替換它作爲glob結果(例如,你應該有一個名爲','的文件)。 –

回答

6

man tr頁,

[=當量=]

等價類

語法[=C=]擴展到所有等效於C的字符,沒有特別的順序。等價類是一個相對較新的旨在支持非英文字母的發明。但似乎沒有標準的方式來定義它們或確定其內容。因此,它們在GNU tr中未得到充分實施;每個角色的等價類只包含那個沒有特別用處的角色。

POSIX tr

這個例子使用一個等價類,以確定file1中基本字符'e'的重音變體,其被剝離的diacritical marks (WikiLink)並寫入到文件2的一個例子。

tr "[=e=]" "[e*]" <file1 >file2 

即,如果在文件1如果爲重音e表示(一個éè),它們被視爲正常e

+2

更有趣的是,我不知道在這種情況下,哪些字符被認爲是逗號。:) – chepner

+0

@chepner:Yup四處搜尋,查看可能的語法用法,無法找到太多內容。或者更普遍的是關於等價類的信息非常稀少。你知道一些嗎?很高興在這裏更新。 – Inian

+1

它可能只是一個等價類。爲了好玩,我試着「回聲」?「; | tr -d'[=?=]'',但第二個字符U + 037E GREEK QUESTION MARK未被刪除。這可能是我需要一個語言環境來定義這樣的等價類,而我只是沒有使用這樣的語言環境。 – chepner

-3

它只會刪除==之間的逗號。檢查下面的輸出。

%[email protected]> echo "1==,==2==,==3=,=4=,=5" | tr -d [=,=] 
1====2====3==4==5 
%[email protected]> 

謝謝。

+1

這並不能解釋'echo「1,2,3,4,5」| tr -d [=,=]'。 – chepner

+0

'tr'獨立於上下文評估每個字符。周圍的內容對行爲沒有任何影響。 –

相關問題