awk
レコード長が表示されるのが心配です。特定のレコード長に対していくつかのファイルをチェックしています。 awkは私が望む結果を示していますが、ファイルサイズはファイルの各レコードが実際にawk
指定されたものより1バイト大きいことを示しています。
$ ls -l some_file.txt
-rw-r--r-- 1 foo bar 250614 Oct 20 08:49 some_file.txt
$ awk '{ print length }' some_file.txt | sort -u
458
$ echo "(250614%458)" | bc
88
$ echo "(250614%459)" | bc
0
bc
レコード長があると結果が間違っていますが、レコード458
長がある場合は結果は問題ありません459
。またawk
、+はsort
次のことを示します。みんな録音されたレコード長はです458
。私の教育を受けた推測は、これがawk
考慮されていないということです行末文字なので、実際のレコード長は459
。どう思いますか?
PS:awk
点灯AIX 5.3
ベストアンサー1
あなたが見ているのは完全に正常です。デフォルトでは、awk はレコードに改行文字を含めません。
~からawkのPOSIX規格:
入力は一連のレコードとして解釈する必要があります。デフォルトでは、レコードは終了<newline>を引いた1行です
。 ...
文字列関数
length[([s])] - 対応する引数を文字列または文字単位の全レコード長として返し、存在しない場合は $0 を返します。パラメータ。