wc -l
はファイル内の行数を数えることができると聞きました。しかし、それを使ってPythonで生成されたファイルの行数をカウントすると、別の結果が得られます。wc -lとcat -nを使って、ファイルのカウント行番号が異なる場合の結果が異なる
ここにMWEがあります。
#!/usr/bin/env python
import random
def getRandomLines(in_str, num):
res = list()
lstr = len(in_str)
for i in range(num):
res.append(''.join(random.sample(in_str, lstr)))
return res
def writeRandomLines(rd_lines, fname):
lines = '\n'.join(rd_liens)
with open(fname, 'w') as fout:
fout.write(lines)
if __name__ == '__main__':
writeRandomLines(getRandomLines("foobarbazqux", 20), "example.txt")
これは、ランダムな文字列の20行を含むファイル、example.txt
を与えます。したがって、example.txt
の行数の除外は20
です。しかし、wc -l
を適用すると、結果として19
となります。 1は、行番号と、ファイルの内容を表示するためにcat -n
を使用する場合、
$ wc -l example.txt
19 example.txt
1は
$ cat -n example.txt
1 oaxruzaqobfb
2 ozbarboaufqx
3 fbzarbuoxoaq
4 obqfarbozaxu
5 xoqbrauboazf
6 ufqooxrababz
7 rqoxafuzboab
8 bfuaqoxaorbz
9 baxroazfouqb
10 rqzafoobxaub
11 xqaoabbufzor
12 aobxbaoruzfq
13 buozaqbrafxo
14 aobzoubfarxq
15 aquofrboazbx
16 uaoqrfobbaxz
17 bxqubarfoazo
18 aaxruzofbboq
19 xuaoarzoqfbb
20 bqouzxraobfa
なぜwc -l
ミスカウント1行を見ることができる、と私は、この問題を修正するために何ができますか?
ヒントやヒントがあります。あなたのpythonのコードで
で各行を終了19.
となりますか?正確な結果を得るために、さまざまな改行のフレーバーを翻訳しなければならなかった時があります。 – Phix