Linux下过滤文本、实现高效文件操作的12个实用命(2)

Jan  2 10:51:34 linuxidc sudo:  linuxidc : TTY=unknown ; PWD=/home/linuxidc ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py 

Jan  2 10:51:34 linuxidc sudo: pam_unix(sudo:session): session opened for user root by (uid=0) 

Jan  2 10:51:39 linuxidc sudo: pam_unix(sudo:session): session closed for user root 

Jan  2 10:55:01 linuxidc CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0) 

Jan  2 10:55:01 linuxidc CRON[4099]: pam_unix(cron:session): session closed for user root 

Jan  2 11:05:01 linuxidc CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0) 

Jan  2 11:05:01 linuxidc CRON[4138]: pam_unix(cron:session): session closed for user root 

Jan  2 11:09:01 linuxidc CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0) 

linuxidc@linuxidc ~ $ head  -n 5 /var/log/auth.log   

Jan  2 10:45:01 linuxidc CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0) 

Jan  2 10:45:01 linuxidc CRON[3383]: pam_unix(cron:session): session closed for user root 

Jan  2 10:51:34 linuxidc sudo:  linuxidc : TTY=unknown ; PWD=/home/linuxidc ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py 

Jan  2 10:51:34 linuxidc sudo: pam_unix(sudo:session): session opened for user root by (uid=0) 

Jan  2 10:51:39 linuxidc sudo: pam_unix(sudo:session): session closed for user root  

5.tail命令

tail输出文件的末尾部分(默认情况下是末尾10行)。使用-n num参数选项符,即可指定显示的行数。

下面这个命令会输出指定文件的末尾5行:

linuxidc@linuxidc ~ $ tail -n 5 /var/log/auth.log 

Jan  6 13:01:27 linuxidc sshd[1269]: Server listening on 0.0.0.0 port 22. 

Jan  6 13:01:27 linuxidc sshd[1269]: Server listening on :: port 22. 

Jan  6 13:01:27 linuxidc sshd[1269]: Received SIGHUP; restarting. 

Jan  6 13:01:27 linuxidc sshd[1269]: Server listening on 0.0.0.0 port 22. 

Jan  6 13:01:27 linuxidc sshd[1269]: Server listening on :: port 22.  

此外,tail有一个特殊的选项-f,可用于实时查看文件(尤其是日志文件)的变化。

下面这个命令让你能够密切关注指定文件的变化:

linuxidc@linuxidc ~ $ tail -f /var/log/auth.log 

Jan  6 12:58:01 linuxidc sshd[1269]: Server listening on :: port 22. 

Jan  6 12:58:11 linuxidc sshd[1269]: Received SIGHUP; restarting. 

Jan  6 12:58:12 linuxidc sshd[1269]: Server listening on 0.0.0.0 port 22. 

Jan  6 12:58:12 linuxidc sshd[1269]: Server listening on :: port 22. 

Jan  6 13:01:27 linuxidc sshd[1269]: Received SIGHUP; restarting. 

Jan  6 13:01:27 linuxidc sshd[1269]: Server listening on 0.0.0.0 port 22. 

Jan  6 13:01:27 linuxidc sshd[1269]: Server listening on :: port 22. 

Jan  6 13:01:27 linuxidc sshd[1269]: Received SIGHUP; restarting. 

Jan  6 13:01:27 linuxidc sshd[1269]: Server listening on 0.0.0.0 port 22. 

Jan  6 13:01:27 linuxidc sshd[1269]: Server listening on :: port 22.  

参阅tail的参考手册页,即可了解完整的用法选项和操作说明:

$ man tail 

6.sort命令

sort用于排序文本文件的行或来自标准输入的行。

下面是一个名为domains.list的文件的内容:

linuxidc@linuxidc ~ $ cat domains.list 

linuxidc.com 

linuxidc.com 

news.linuxidc.com 

news.linuxidc.com 

linuxsay.com 

linuxsay.com 

windowsmint.com 

windowsmint.com  

你可以运行简单的sort命令,排序文件内容,就像这样:

linuxidc@linuxidc ~ $ sort domains.list 

linuxsay.com 

linuxsay.com 

news.linuxidc.com 

news.linuxidc.com 

linuxidc.com 

linuxidc.com 

windowsmint.com 

windowsmint.com  

使用sort命令有好多方式,我们编写了几篇实用文章来介绍sort命令,如下所示:

Linux中的sort命令 

Linux Sort命令的七个有趣实例(二)

7.uniq命令

uniq命令用于报告或忽略重复的行,它可以过滤来自标准输入的行,并将结果写入到标准输出。

对输入流运行sort后,可以用uniq来消除重复的行,如下面这个例子所示。

为了表明某行出现的次数,可使用-c选项,忽视大小写区别,同时通过加入-i选项来比较:

linuxidc@linuxidc ~ $ cat domains.list 

linuxidc.com 

linuxidc.com 

news.linuxidc.com 

news.linuxidc.com 

linuxsay.com 

linuxsay.com 

windowsmint.com 

sort domains.list | uniq -c 

2 linuxsay.com 

2 news.linuxidc.com 

2 linuxidc.com 

1 windowsmint.com   

阅读uniq的参考手册页,可进一步了解用法信息和标志:

$ man uniq 

8.fmt命令

fmt是简单的最佳文本格式器,它可以重新格式化指定文件中的段落,并将结果打印输出到标准输出。

下面是从文件domain-list.txt提取的内容:

1.linuxidc.com 2.news.linuxidc.com 3.linuxsay.com 4.windowsmint.com

要将上述内容重新格式化成标准列表,运行下面这个命令,-w参数选项符用来定义最大行宽:

linuxidc@linuxidc ~ $ cat domain-list.txt 

1.linuxidc.com 2.news.linuxidc.com 3.linuxsay.com 4.windowsmint.com 

linuxidc@linuxidc ~ $ fmt -w 1 domain-list.txt 

1.linuxidc.com 

2.news.linuxidc.com 

3.linuxsay.com 

4.windowsmint.com  

9.pr命令

pr命令可转换文本文件或标准输入,以便打印输出。比如在Debian系统上,你可以列出所有已安装的程序包,如下所示:

$ dpkg -l 

想组织整理分成页和列的列表、准备打印输出,运行下面这个命令。

linuxidc@linuxidc ~ $ dpkg -l | pr --columns 3 -l 20   

2017-01-06 13:19                               

          Page 1 

Desired=Unknown/Install  ii  adduser            ii  apg 

| Status=Not/Inst/Conf-   ii  adwaita-icon-theme    ii  app-install-data 

|/ Err?=(none)/Reinst-r    ii  adwaita-icon-theme-  ii  apparmor 

||/ Name          ii  alsa-base         ii  apt 

+++-=============== ii  alsa-utils              ii  apt-clone 

ii  accountsservice       ii  anacron               ii  apt-transport-https 

ii  acl               ii  apache2               ii  apt-utils 

ii  acpi-support        ii  apache2-bin         ii  apt-xapian-index 

ii  acpid                 ii  apache2-data          ii  aptdaemon 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14473.html