どのsed/awkコマンドを使用できますか?sort -u
すべてのインスタンスを削除します
入力する:
abc
abc
def
abc
abc
def
予想出力:
abc
def
abc
def
答え1
これがuniq
標準コマンドの目的です。
uniq your-file
いくつかのuniq
実装(例:GNU)uniq
は、一連の行の最初の行を提供します。同じソート(strcoll()
0を返す)の代わりにバイトはバイトと同じです。(ここmemcmp()
またはstrcmp()
0を返します)。実装に関係なくバイト間比較を強制するには、uniq
次のロケールを強制的に適用できますC
。
LC_ALL=C uniq your-file
答え2
Vimはこれをとてもよく行います。
:g/\v^(.*\n)\1/d
あるいは、vimをコマンドラインツールとして使用したい場合は、次のことができます。
vim file -c "g/\v^(.*\n)\1/d" -c "wq"
そうすれば、後でvimを終了する必要はありません。 ;)
説明する:
:g/
この正規表現に一致するすべての行で...
\v^(.*\n)\1
すべての行はそれ自体につながります...
/d
ジャンプしたDeleteコマンド(現在行を削除)変更を保存して終了するだけです-c "wq"
。
答え3
これはawk
同じです:
awk 'p!=$0; {p=$0}' file
p!=$0;
前の行と異なる場合は、;
ここに印刷行が必要です。現在の行に{p=$0}
設定します。p
最初の行が空の場合、最初の行が欠落しているという明白なエラーがあります。簡単な修正は次のとおりです。
awk 'NR==1 || p!=$0; {p=$0}' file