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

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

下面的这些内容是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 ]

 

时间: 2024-12-03 21:30:46

Linux命令行里的“瑞士军刀”的相关文章

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

这里说的"瑞士军刀"是指那些简单的一句命令就能完成其它高级语言一大片代码才能完成的工作. 下面的这些内容是Quora网站上Joshua Levy网友的总结: 通过sort/uniq获取文件内容的交集.合集和不同之处:假设有a.b两个文本文件,文件本身已经去除了重复内容.下面是效率最高的方法,可以处理任何体积的文件,甚至几个G的文件.(Sort对内存没有要求,但也许你需要用 -T 参数.)可以试着比较一下,你可以看看如果用Java来处理磁盘上文件的合并,需要用多少行代码. 复制代码 代码

如何在 Linux 中使用 Alpine 在命令行里访问 Gmail

如何在 Linux 中使用 Alpine 在命令行里访问 Gmail 假如你是一个命令行爱好者,我很确信你会使用这个强大的工作环境来执行哪怕是一项日常任务的工具,并为之欢呼,例如从 安排日程 . 管理财务 到 获取 Facebook .Twitter等任务.(LCTT 译注:阅读本文的另一个前提是,假如你还能访问 Gmail 或者知道 Gmail 是什么的话.) 在这个帖子中,我将为你展示 Linux 命令行的另一个漂亮干练的使用案例:访问 Google 的 Gmail 服务,为此,我们将使用

在Linux中使用Alpine工具在命令行里访问Gmail的教程

  在这个帖子中,我将为你展示 Linux 命令行的另一个漂亮干练的使用案例:访问 Google 的 Gmail 服务,为此,我们将使用 Alpine,一个基于 ncurses 的多功能命令行邮件客户端(不要和 Alpine Linux 搞混淆).我们将在 Alphine 中配置 Gmail 的 IMAP 和 SMTP 设定,通过 Google 的邮件服务器在终端环境中收取和发送邮件.在这个教程的最后,你将发现只需几步就可以在 Alpine 中使用其他的邮件服务. 诚然,已有许多卓越的基于 GU

Java服务化系统线上应急和技术攻关,你必须掌握的Linux命令

上一篇文章<Java服务化系统线上应急和技术攻关,你必须拥有的那些应用层脚本和Java虚拟机命令>介绍了笔者在互联网公司里线上应急和技术攻关过程中积累的应用层脚本和Java虚拟机命令,这些脚本和命令在发现问题和定位问题的过程中起到关键作用,然而,经常会遇到一些深层次的问题,仅仅通过应用层和JVM虚拟机层的信息无法定位问题和解决问题,这时需要深入研究系统级的各种参数和信息,才能确定问题的根源原因,例如:网络超时.机器负载过高.JVM OOM.JVM和内核Bug等,这篇文章介绍那些重要的Linux

怎样在Linux命令行下杀死一个进程

Linux 的命令行里面有用来停止正在运行的进程的所有所需工具.Jack Wallen 将为您讲述细节. 想像一下:你打开了一个程序(可能来自于你的桌面菜单或者命令行),然后开始使用这个程序,没想到程序会锁死.停止运行.或者意外死机.你尝试再次运行该程序,但是它反馈说原来的进程没有完全关闭. 你该怎么办?你要结束进程.但该如何做?不管你信与不信,最好的解决方法大都在命令行里.值得庆幸的是, Linux 有供用户杀死错误的进程的每个必要的工具,然而,你在执行杀死进程的命令之前,你首先需要知道进程是

Linux 命令大全-网络资源

Linux  命令大全 地址: http://man.linuxde.net/ 说明: 包括网络.系统等命令查询---备查询.

PHP执行Linux命令常用的6个函数

一般情况下,很少会用php去执行linux命令,不过特殊情况下,你也许会用到这些函数.以前我知道有二个函数可以执行linux命令,一个是exec,一个是shell_exec.其实有很多的,结合手册内容,介绍以下6个函数. 1,exec函数 <?php      $test = "ls /tmp/test";   //ls是linux下的查目录,文件的命令      exec($test,$array);       //执行命令      print_r($array);   

在Windows中使用linux命令

想在win下使用linux命令,其实也没有那么困难,下面就给大家介绍一种方法: 使用过linxu的同学估计都会喜欢上linux各种各样强大的命令如:grep, sed,awk,diff和patch.cygwin是一个windows下的linux模拟器,对于想在windows下使用linux命令的人来说是一个选择.但是cygwin过于复杂庞大,下载比较费劲,本人最终没有下载,也没有用过.个人感觉GunWin32是一个不错的选择,GnuWin32使windows用户可以在命令行窗口中使用各种各样的l

让Linux命令加速

Linux中大多数命令只做一件事,因此,通过Shell脚本语言把各种程序粘合起来使用时,就能完成复杂的任务.本文充分利用功能强大,但简单易学的小工具,给出一些实际问题的解决方案,希望使Linux更实用.更好用. 让命令"说话" 几乎每个Linux命令都有很多选项,允许使用者根据需要灵活地定制.但这给初学者带来诸多不便,一是学起来麻烦,二是容易遗忘,需要时不得不重新再来. 那么有没有办法让命令自己"说话"呢?通过Shell脚本语言可以给命令加上友好的"面孔&