Tr
即使我閱讀了手冊,我也無法理解 -c 參數在 Ubuntu GNU/Linux 的 tr 命令中的作用
我嘗試根據它說的命令來理解命令
-c
中的選項:tr``man tr
-c, -C, –complement 使用 SET1 的補碼
但我無法理解文件中*“補充”*的含義,所以我做了以下範例來理解它:
我創建了以下名為
trance.txt
:ILOVE YOU I HATE YOU i WANNA EAT APPLE PIE
我跑:
tr -C A-Za-z "\n" < trance.txt
這給出了輸出:
ILOVE YOU I HATE YOU i WANNA EAT APPLE PIE
但我仍然不明白
-c
選項的實際作用。你能給我解釋一下嗎?
A-Za-z
它用它的補碼替換集合,即目前字元集中的所有字元,減去那些指定的字元。引用POSIX,在沒有的情況下-d
:
- 如果指定了**-C選項,則應放置由string1指定的字元的補碼(目前字元集中所有字元的集合,由LC_CTYPE的目前設置定義,除了那些在*string1操作數中實際指定的字元)按照LC_COLLATE*的目前設置定義的升序排序順序的數組中。
- 如果指定了**-c選項,則**string1指定的值的補碼應按二進制值升序放置在數組中。
所以你的命令是用換行符替換所有不是AZ 或 az 的字元。
因為
tr
使用一對一的字元映射來替換它,所以它並不那麼簡單;-c
and不僅僅是“不在”選項,它們按照-C
選項指定的順序建構不在給定集中的所有字元的集合。這僅在目標集具有多個字元時才相關。