技术开发 频道

高效Linux用户需要了解的命令行技能

  4.数据处理

  sort,uniq, uniq -u, uniq -d

  了解这些排序命令

  cut,paste, join

  了解这些文本文件的维护工具。很多人都在使用cut后,忘记join。

  使用sort/uniq进行集合的交、并、补运算=

  假设a和b是两个文本文件,其中的行都是唯一的。

  如下几个命令可以快速的实现一些集合操作。

cat a b | sort | uniq > c   # c is a union b
cat a b | sort | uniq
-d > c   # c is a intersect b
cat a b b | sort | uniq
-u > c   # c is set difference a - b

  使用LC_ALL=C

  Linux中有关locale的设置会影响大量的命令行工具,其中包括排序工具。

  多数安装的Linux系统都将LANG或者其他的locale默认设置成US English。

  但这可能会导致排序及其他命令慢上好几倍。

  因此export LCALL=C能避免使用i18n形式处理数据,带来性能提升。

  awk,sed

  这两个工具能实现复杂的数据替换和修改。

  例如,下面的命令实现对文本文件中低三列的数据求总和。

  使用shell完成此运算比用Python快3倍。

awk '{ x += $3 } END { print x }'

  shuf

  该命令可以从将一个文件中的行混洗,或者从中随机选出一些行。

  sort

  了解sort的常用选项(-t,-k, -s)如何工作。 注意-k1,1只会排序第一列,而-k1会根据整个行排序。 -s能实现稳定排序。

  例如,先使用第二个域排序,再按照域一排序,可以用这段命令实现。

cat INPUT_FILE | sort -k1,1  | sort -s -k2,2

  制表符的输入

  在bash的命令行中,如若需要输入制表符,可以使用 Ctrl-V 或者 $’\t’ 实现。

  hd,bvi

  对于二进制文件,这两个命令分别实现16进制抽取,二进制编辑操作。

  strings,grep

  可以帮助在二进制文件中寻找文本。

  iconv,uconv

  可以帮助转换文本编码。

  split,csplit

  分别可以实现将文件按照大小分割,以及按照特定的模式分割。

0
相关文章