こんにちは、特別な問題があります... Linux sortコマンドを実行して2つのテキストファイル(各ファイルに3331行と4344行がある)を並べ替えると、一番上の行3317と4335のみが出力ファイルに含まれます。私が実行するコマンドは次のとおりです。
sort -o contactspreservesort.csv contactspreserve.csv
sort -o contactsdeletesort.csv contactsdelete.csv
私もこれを試しました:
sort contactspreserve.csv > contactspreservesort.csv
sort contactsdelete.csv > contactsdeletesort.csv
どんなアイデアがありますか?ありがとう
答え1
エンドラインが欠けており、親ラインが維持されていることをどのように知ることができますか?ファイルが短いからといって最後の数行が落ちるのではなく、何かが抜けたという意味です。
wc -l だけでなく、4 つのファイルすべてに対して wc 全体を表示します。私たちは、すべての(またはほとんどの)キャラクターがそこにあることがわかります。一部のCRによって、一部の「偽」行がリンクされる可能性があります(発生してはいけませんが、すべてが発生してはいけません)。
あなたの作業ファイルの並べ替えはどこに行きますか? /tmp であったり、ほぼいっぱいになったりすることもあります。
ソートを実行した後、状態をエコーします。
どの行が欠落しているかを正確に知らせるためにawkを投稿できます。これは何が起こっているのかを説明するのに役立ちます。 (ファイルが異なるようにソートされていると、Diffは機能しません。膨大な量のレポートを受け取ります。)
たぶんいくつかの行が長すぎるかもしれません。制限は覚えていません(存在する場合)。最大行長を表示するために awk を実行することもできます。
次の質問をしてください。どのオペレーティングシステム、どのバージョン、どのマシンか。たとえば、SunOS は非常に不安定で行が長くなりました。
答え2
みんなありがとうございます。問題の原因を見つけました。 sortコマンドの出力をwc -lにパイプ処理しようとしましたが、両方のcsvファイルに対して行数が正しく報告されました。いくつかの試行錯誤の後、私は問題が私が使用していたPythonスクリプトとは何の関係もないことを発見しました。 sort コマンドを使用してファイルをソートするスクリプトの最後の os.system 呼び出しを別の bash シェルスクリプトに置き換えました。私はWindows 10の一部としてUbuntu LinuxサブシステムにバンドルされているPython 3.6.7とBash Shellを使用しています。