Linux命令行里的“瑞士军刀”

系统 Linux
本文说的“瑞士军刀”是指那些简单的一句命令就能完成其它高级语言一大片代码才能完成的工作。

这里说的“瑞士军刀”是指那些简单的一句命令就能完成其它高级语言一大片代码才能完成的工作。

[[74612]]

下面的这些内容是Quora网站上Joshua Levy网友的总结:

  • 通过sort/uniq获取文件内容的交集、合集和不同之处:假设有a、b两个文本文件,文件本身已经去除了重复内容。下面是效率最高的方法,可以处理任何体积的文件,甚至几个G的文件。(Sort对内存没有要求,但也许你需要用 -T 参数。)可以试着比较一下,你可以看看如果用Java来处理磁盘上文件的合并,需要用多少行代码。

 

cat a b | sort | uniq > c   # c 是a和b的合集
cat a b | sort | uniq -d > c   # c 是a和b的交集
cat a b b | sort | uniq -u > c   # c 是a和b的不同
  • 汇总一个文本内容里第三列数字的和(这个方法要比用Python来做快3倍并只需1/3的代码量):

 

 awk ‘{ x += $3 } END { print x }’ myfile
  • 如果你想查看一个目录树里的文件的体积和修改日期,用下面的方法,相当于你挨个目录做”ls -l”,而且输出的形式比你用”ls -lR”更可读:

 

 find . -type f -ls
  • 使用xargs命令。这个命令非常的强大。注意每行上你可以控制多少个东西的执行。如果你不确定它是正确的执行,先使用xargs echo。同样,-I{} 也非常有用。例子:

 

find . -name \*.py | xargs grep some_function
cat hosts | xargs -I{} ssh root@{} hostname
  • 假设你有一个文本文件,比如一个web服务器日志,在某些行上有一些值,比如URL中的acct_id参数。如果你想统计每个acct_id的所有请求记录:

 

cat access.log | egrep -o ‘acct_id=[0-9]+’ | cut -d= -f2 | sort | uniq -c | sort -rn 

[英文原文:What are the most useful "Swiss army knife" one-liners on Unix? ]

责任编辑:黄丹 来源: 外刊IT评论
相关推荐

2014-09-26 14:30:41

2010-12-01 12:31:23

NetCat扫描端口

2013-04-11 10:51:27

2017-05-03 14:45:45

MySQL数据恢复

2019-06-27 17:00:09

nc命令 Linux

2020-07-02 09:21:40

Java 缓存开发

2009-07-21 14:16:18

Scalafor表达式

2014-05-29 14:44:06

瑞士军刀综合征开发者

2011-10-18 14:11:17

Web开发

2022-02-15 10:15:13

Web网络程序员

2021-09-05 18:30:59

Alpine容器Busybox

2011-08-01 09:43:08

PhoneGap 1.PhoneGap

2019-06-24 09:57:39

网络工具调试

2023-04-27 07:06:09

Categraf夜莺

2023-12-25 12:03:42

2023-12-07 18:16:50

2015-09-28 09:46:31

ZooKeeper分布式系统瑞士军刀

2017-04-21 09:42:18

4G5G物联网

2021-12-28 09:55:40

UbuntuRescuezillaLinux

2020-11-07 16:30:27

Python开发程序员
点赞
收藏

51CTO技术栈公众号