私は実際にバッチスクリプトを書いており、バッチコード(これは不十分でした)、uniq、sort、sedなどを使用して重複行を削除する必要がありますが、プロセスでリストをソートできません。何か案は ?
sort <file> | uniq
うまく機能しますが、すでにソートされているファイルをソートします。アイデアはありますか?
cat <file> | uniq
失敗します。
私は実際にバッチスクリプトを書いており、バッチコード(これは不十分でした)、uniq、sort、sedなどを使用して重複行を削除する必要がありますが、プロセスでリストをソートできません。何か案は ?
sort <file> | uniq
うまく機能しますが、すでにソートされているファイルをソートします。アイデアはありますか?
cat <file> | uniq
失敗します。
ファイルがすでにソートされている場合は、次の例のように uniq コマンドを使用できます。
sort は uniq の要件ではありません。連続する重複を排除するだけなので、強くお勧めします。行番号 2、3、4、8 で行が繰り返され、パイプ内にソート コマンドがない場合、行 2 と 8 が出力されます。sort を使用すると、2 行目のみが出力されます。
これがあなたの求めているものであることを願っています
たとえば、(配列変数をサポートする)あまり古くないバージョンを使用できる場合は、ループbash
で簡単に実行できます。while
#!/bin/bash
declare -a LINES
while read; do
for n in "${LINES[@]}"; do
if [[ $n == $REPLY ]]; then
continue 2
fi
done
LINES=("${LINES[@]}" "$REPLY")
echo "$REPLY"
done
ファイルが大きい場合は、awk または Perl の方がよいでしょう。