Text-Processing
如果下一行相同,則刪除行
我可以使用什麼 sed/awk 命令?只會
sort -u
刪除所有實例輸入:
abc abc def abc abc def
預期輸出:
abc def abc def
這就是
uniq
標準命令的用途。uniq your-file
請注意,
uniq
像 GNU 之類的一些實現會為您提供排序相同uniq
的行序列中的第一行(其中返回 0),而不是逐字節相同(或返回 0)。無論實現如何,要強制進行字節對字節比較,您可以強制語言環境使用:strcoll()``memcmp()``strcmp()``uniq``C
LC_ALL=C uniq your-file
Vim 可以很好地做到這一點:
:g/\v^(.*\n)\1/d
或者,如果您更願意使用 vim 作為命令行工具,您可以這樣做
vim file -c "g/\v^(.*\n)\1/d" -c "wq"
這樣你就不必在以後與退出 vim 搏鬥了 ;)
解釋:
:g/
在與此正則表達式匹配的所有行上…
\v^(.*\n)\1
其後的任何一行…
/d
執行d刪除命令(刪除目前行)。這
-c "wq"
是保存更改並退出。