このコマンドがなぜ出てくるのか分かりません。
sort filename.txt | uniq
このファイルを処理できません。http://packetstormsecurity.com/files/32089/koran.gz.html
私も以下を使用しました。
awk '!seen[$0]++' koran.txt
perl -ne 'print unless $dup{$_}++;' koran.txt
そして、この特定のファイルを扱う人は誰もいないようです。理由をご存知ですか?
答え1
don_crissti
彼の意見には主な問題が強調されています。彼は次のコマンドを実行してファイルの種類を決定します。
file koran
...出力:
ASCII C++ program text, with CRLF, LF line terminators
末尾にあるCR
(キャリッジリターン - 16進値)文字を削除する必要があります。\x0D
一部入力ファイルの行。これは、CR
Microsoft Windowsスタイルの行末(CRLF)の最初の文字です。 2番目の(MS)文字はLF
(改行)です。 Single はLF
Unix スタイルの行終端に有効な単一文字です。CR
ファイルから不要な文字を削除する1つの方法は次のとおりです。
sed 's/\x0D$//' koran | sort -u
sort
「同等の実行中に最初の出力のみ」オプションがあるため、-u
実際にパイプする必要はありません。uniq
CR
またはこれが唯一のものであると確信している場合印刷されないファイルに文字がある場合は、文字ソート-i
オプションを使用できますignore nonprinting
。CR
sort -iu koran
更新:次のユーザーの意見
に基づいています。@Francesco Mantovani
一部以前に述べられていない他のファイルの入力行にもCRの前にスペースがあります。これは次の方法で簡単に処理できますsed
。
sed 's/[[:space:]]\+$//' male.txt female.txt | sort -u
sed -n l
ところで、「list current line」man sed
コマンドに従って出力をパイピングして違いを発見しました。l
視覚的に明確形態"。