Date
Dec. 22nd, 2024
 
2024年 11月 22日

Post: UNIX/Linux : awk 清理重复行

UNIX/Linux : awk 清理重复行

Published 12:10 Oct 26, 2015.

Created by @ezra. Categorized in #Technology, and tagged as #UNIX/Linux.

Source format: Markdown

Table of Content

最近遇到一个需求,就是要清理掉文本中重复的行。这看起来并不是什么困难的事情,你可以使用 Python、Ruby、Perl 甚至 C 来完成这项任务,轻而易举。

但是,作为一个处女座的程序员,并不能满足于此。在 UNIX 世界中,还有一个很基础同时也是很强大的工具 —— awk。

awk '{ if (!seen[$0]) print $0; seen[$0]++ }'

但这依然不够简洁,我这样想的一个重要的原因是,在 awk 中对很多操作都有预设,因此你并不需要明确的告诉它每一件事。例如,awk 会认为你希望循环处理文本的每一行,或者它会认为你希望打印处理结果。

现在,删掉一些不必要的指令让它看起来更清晰一些:

awk '!seen[$0]++' <filename>
Pinned Message
HOTODOGO
The Founder and CEO of Infeca Technology.
Developer, Designer, Blogger.
Big fan of Apple, Love of colour.
Feel free to contact me.
反曲点科技创始人和首席执行官。
开发、设计与写作皆为所长。
热爱苹果、钟情色彩。
随时恭候 垂询