Posix
根據 POSIX,OD 實用程序用什麼字母分隔每個字節?
例如,在我的 Termux 上,可以獲得以下內容:
$ od -A n -t x1 /dev/urandom | head -n 2 e3 5d bf 57 fb 8b 63 06 4a 18 fe 28 73 8f 3e c0 9f 08 6b d4 2d 38 2c 68 3c 51 83 1e 71 7b 57 2b
如您所見,這些值用空格字元分隔。
輸入數據以塊的形式進行操作,…… 每個輸入塊將按照指定輸出類型的順序寫入每個輸出類型的轉換,每個寫入行一個。如果輸入塊大小大於輸出類型轉換的字節數,……每個轉換的輸出將由一個或多個空白字元分隔。
我在上面的引文中用“…”代替了一些不必要的部分。 2004和2018版的 POSIX 說的和上面一樣。
規範是否意味著可以用製表符、’\f’、’\r’ 和任何其他
[:blank:]
(在 BRE 中)東西而不是空格和 LF 來分隔每個字節、單詞或任何內容?PS。實際上,我正在考慮在 POSIXism 範圍內將每個字節放入每一行的最有效和最快的方法。起初我認為
od -A n -t x1 -v | tr ABCDEF abcdef | tr -Cd abcdef0123456789\\n | fold -w 2 | grep .
或類似的東西會更好。然後我發現 POSIX 規範說了一些有問題的東西,如上所述。還有小數怎麼樣:od -A n -t u1 -v | tr -Cs 0123456789- '[\n*]' | grep .
是一種方法,但不使用tr -C
…呢?它會讓它更快嗎?這就是目的。
我很抱歉缺乏研究,但我剛剛發現了這個:
在 POSIX 語言環境中,空白字元是製表符或空格字元。
資源。https://pubs.opengroup.org/onlinepubs/007908799/xbd/glossary.html#tag_004_000_031
因此,只有 ’ 和製表符是分隔符(如果在 POSIX 語言環境中;此時我不關心其他語言環境)。我很抱歉把它們誤認為是空格字元。