ファイル内のスペースで始まる行をフィルタリングしたいと思います。次のコマンドを使用します。
grep -v "^ " < input > input_no_starting_space
結果を再確認するには、次のコマンドを実行します。
grep "^ " < input > double_check
input_no_starting_space
次に、合計の行数を計算し、その合計がのdouble_check
行数と等しいことを確認しますinput
。このために私はwc -l
。
何らかの理由でこのチェックが失敗しました。つまり、行番号の合計がの行数より小さいですinput
。私のファイルには何百万行もありますが、小さな例では問題を再現できないようです。 grepを使用する方法に問題があります(私が望んでいてgrep
常にgrep -v
互いに補完するので)、それともこれが私のファイルのアーティファクトである可能性が高いですか?後者ならこの遺物は何でしょうか?
これは、GNU grep 3.4を使用するUbuntu 20.04.3にあります。
答え1
input_file
あなたのデータには、単純なテキストデータ以上の内容が含まれる可能性があります。
grep
withオプションを試してください-a
。
データエンコードとNULL値のコマンド--binary-files=TYPE
オプションgrep
とman grep
最初の段落も参照してください。
ファイルのデータまたはメタデータがファイルにバイナリデータが含まれていることを示す場合、そのファイルはタイプタイプと見なされます。非テキストバイトはバイナリデータを表します。これは、現在のロケールに対して誤ってエンコードされた出力バイト、または-zオプションが指定されていない場合は空の入力バイトです。