1

私は実際にバッチスクリプトを書いており、バッチコード(これは不十分でした)、uniq、sort、sedなどを使用して重複行を削除する必要がありますが、プロセスでリストをソートできません。何か案は ?

    sort <file> | uniq   

うまく機能しますが、すでにソートされているファイルをソートします。アイデアはありますか?

    cat <file> | uniq

失敗します。

4

3 に答える 3

3

ファイルがすでにソートされている場合は、次の例のように uniq コマンドを使用できます。

猫 | 猫 | ユニーク

sort は uniq の要件ではありません。連続する重複を排除するだけなので、強くお勧めします。行番号 2、3、4、8 で行が繰り返され、パイプ内にソート コマンドがない場合、行 2 と 8 が出力されます。sort を使用すると、2 行目のみが出力されます。

これがあなたの求めているものであることを願っています

于 2012-11-14T21:30:33.933 に答える
2
于 2012-11-15T06:35:03.310 に答える
1

たとえば、(配列変数をサポートする)あまり古くないバージョンを使用できる場合は、ループ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 の方がよいでしょう。

于 2012-11-14T21:47:28.820 に答える