の場合、フラグをcat
使用しましたが、-A
この文字の意味はどこにも見つかりません。たとえば、
cat /proc/cpuinfo > output
cat -A output
その行の1つは次のとおりです。
processor^I: 7$
New Lineが何を意味するのか知っていますが$
、それはどういう^I
意味ですか?
どういう意味ですか^@
?
私のCプログラムから削除できるように、どのタイプの空白cpuinfoが突き出ているのかを理解しようとしていますが、これを行うのに問題があります。
答え1
^I
^@
一般的な「カラット」表記法を使用します。制御文字。^I
タブ文字である文字9のASCII文字control-Iを示します。^@
Cの文字列終端文字である文字0のASCII文字control-@を示します。一般的な形式は大文字またはそのいずれかであり、値がマイナス64のバイト値を表し、バイト値に64を加えた値である127を表します。^c
c
@[\]^_
c
^?
?
別の標準的でない表現がありますcat -A
。非ASCIIバイト(つまり、128以上のバイト値)が次のように表示され、M-
その後に値が128未満のバイト(つまり、上位ビットが反転されたバイト値)の表現が表示されます。 。
cat -A
視覚的にぼやけた出力を理解する最良の方法ではありません。 16進成績表は、より正確な情報を提供します。
od -t x1 /proc/cpuinfo
hd /proc/cpuinfo
ただし、Cプログラムではscanf
情報を解析するために使用できます。すべてのASCIIスペースは空白であり、ファイル内のファイルはフォーマットが有効であるscanf
こと/proc
を知っています。
答え2
この場合、^
「control」は「control」の短縮語として使用されます。したがって、^A
ASCII文字1の「control-A」を意味します。 ^I
表現control-I
またはASCII 9とも呼ばれますTAB。 ^@
したがって、ASCII 00 または NUL 文字です。
このような文字をしばしば「制御文字」といいます。
;これは「メタ」をM-
意味し、最も高いビットが設定されたことを意味します(次の文字のASCII値に128が追加されます)。
答え3
付録として、文字と制御文字の関係は、他の答えから完全に明確ではありません
これASCII文字セット次の表に表示できます。
NUL SP @ `
SOH ! A a
STX " B b
ETX # C c
EOT $ D d
ENQ % E e
ACK & F f
BEL ' G g
BS ( H h
HT ) I i
LF * J j
VT + K k
FF , L l
CR - M m
SO . N n
SI / O o
DL 0 P p
DC1 1 Q q
DC2 2 R r
DC3 3 S s
DC4 4 T t
NAK 5 U u
SYN 6 V v
ETB 7 W w
CAN 8 X x
EM 9 Y y
SUB : Z z
ESC ; [ {
FS < \ |
GS = ] }
RS > ^ ~
US ? _ DEL
ご存知のように、TABというラベルの付いたキーボードキーを押すと、TABという制御文字を文書に挿入できますTAB。CTRLキーを押しながらを押しても同じ効果が得られることがわかりますI。これ制御キータグはCTRLASCIIを入力する方法で存在します。制御文字。
上の表に示すように、「I」文字はHT(水平タブ、TAB)文字と同じ行にあります。
CTRL今日、私たちはこの文字を+と書くことができますが、I以前は略語として使用する方が一般的でした。^I
表でもわかるように、「@」は「NUL」と同じ行にあるため、^@
NULL文字0x00のNULを表します。
表の配列は、これらのASCII文字に割り当てられた数値(「コードポイント」)を示しており、各値は0x40に対応する制御文字の値を加えたものです。
答え4
16進ビューアを使用してください。
% hexdump -C /proc/cpuinfo | sed -n /processor/p
00000000 70 72 6f 63 65 73 73 6f 72 09 3a 20 30 0a 76 65 |processor.: 0.ve|
00000340 74 3a 0a 0a 70 72 6f 63 65 73 73 6f 72 09 3a 20 |t:..processor.: |
%
ascii(7)
次に、表または類似の表を見つけて、ここ09
または水平タブで特定のコードを見つけます。