以下のawkコマンドは、ここで説明されているように、すべての重複行を削除します。
awk '!seen[$0]++'テキストに空行が含まれている場合、1行を除くすべての空行が削除されます。
のみを使用して、空ではないすべての重複行を削除しながら、すべての空の行を保持するにはどうすればよいawkですか?また、簡単な説明も含めてください。
以下のawkコマンドは、ここで説明されているように、すべての重複行を削除します。
awk '!seen[$0]++'テキストに空行が含まれている場合、1行を除くすべての空行が削除されます。
のみを使用して、空ではないすべての重複行を削除しながら、すべての空の行を保持するにはどうすればよいawkですか?また、簡単な説明も含めてください。
回答:
awk@Thorの答えに似た別のソリューションを次に示します。簡潔ではありませんが、より効率的です。
awk '!NF {print;next}; !($0 in a) {a[$0];print}' fileこれにより、a[$0]存在するかどうかのみをチェックします。そうでない場合は、初期化してから印刷します。この場合、参照、a[$0]存在する場合の割り当てはありません。