GNU/Linux >> Linux の 問題 >  >> Linux

Linux シェル wc -c カウント文字数 +1

wc のヘルプ メッセージを見てください。 . -c オプションは、文字数を出力します。 echo コマンドには、デフォルトで改行文字が含まれています。 wcのとき 改行を別の文字としてカウントするため、結果に追加のカウントが表示されます。以下に示す代替手段のいずれかを使用して、これを回避できます。 -w 単語数と -l を数えます 行数を数えます。

echo "k" | wc -w 
echo "k" | wc -l

wc の出力をパイプできます awk まで 改行文字を除いた文字数を取得するには:

wc <filename> | awk '{print $3-$1}'

wc のデフォルト出力 オプションを指定しないと、改行文字数 ($1 から awk)、単語数、文字数 ($3 から awk) がこの順序で出力されます。


あなたが echo "k"echo コマンドは、出力するように要求したものに改行文字を追加します ("k")。 -n を使用できます これを無効にするオプション:

echo -n k | wc -c
1

目に見えないものを表示するため 文字、od でストリームをダンプできます または hd :

echo k | od -t c
0000000   k  \n

echo k | hd
00000000  6b 0a                                             |k.|

echo k | od -t a -A n
   k  nl

echo を使用しているためです。 、文字列に改行を追加します。 printf を使用 代わりに:

$ echo k | wc -c 
       2
$ printf k | wc -c
       1

Linux
  1. Linuxのファイルから行、単語、文字を数える

  2. Linux シェルで 16 進数を ASCII 文字に変換する方法は?

  3. % は Linux シェル文字列で何をしますか?

  1. Linuxでシェルを変更する方法

  2. Linuxエコーコマンド

  3. Linux での echo コマンドの例

  1. Linuxでの16のエコーコマンドの例

  2. UNIXシェル変数への改行文字の追加

  3. Linux シェル ユーティリティ:16 進数のリストを 10 進数のリストに変換する