Tr

即使我閱讀了手冊,我也無法理解 -c 參數在 Ubuntu GNU/Linux 的 tr 命令中的作用

  • June 6, 2018

我嘗試根據它說的命令來理解命令-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使用一對一的字元映射來替換它,所以它並不那麼簡單;-cand不僅僅是“不在”選項,它們按照-C選項指定的順序建構不在給定集中的所有字元的集合。這僅在目標集具有多個字元時才相關。

引用自:https://unix.stackexchange.com/questions/448166