上一篇我们讲到了cat的使用示例:https://www.cnblogs.com/WeiLian1024/p/11863057.html

本篇我们将继续延续Cat讲讲Tac

本文是我们讲讲Linux技巧和窍门系列的一部分,在本文中,我们将介绍cat命令和tac的一些基本用法。

Cat指令示例

Cat命令在Linux中的基本用法

Cat命令(Concatenate的缩写)是* nix系统中最常用的命令之一。该命令最基本的用法是读取文件并将其显示到stdout,标示在终端上显示文件的内容。

# cat file.txt

Calinux@Calinux ~ $ cat filel.txt

Calinux is best site for Linux

Calinux@Calinux ~ $

  

cat命令的另一种用法是将多个文件读取或组合在一起,以下示例所示。

#cat file1.txt file2.txt file3.txt> file-all.txt
Calinux@Calinux~ $ cat filel.txt file2.txt file3.txt
Calinux is best site for Linux
Calinux is best site for Linux on the web.
Calinux is best site for Linux on the pLanet..
Calinux@Calinux~$

  

该命令还可用于使用“>”Linux重定向运算符将多个文件连接(合并)为一个文件。

#cat file1.txt file2.txt file3.txt> file-all.txt
Calinux@Calinux ~ $ cat filel.txt file2.txt file3.txt > file-all.txt
Calinux@Calinux ~ $ cat file-all.txt
Calinux is best site for Linux
Calinux is best site for Linux on the web.
Calinux is best site for Linux on the planet..
Calinux@Calinux ~ $

  

通过使用重定向程序,可以file-all.txt使用以下语法将新文件的内容添加到的底部。

#cat file4.txt >> file-all.txt
Calinux@Calinux~$ cat file4.txt
Calinux is best site for Linux in the Universe....
Calinux@Calinux ~$ cat file4.txt >> file-all.txt
Calinux@Calinux~$ cat file-all.txt
Calinux is best site for Linux
Calinux is best site for Linux on the web.
Calinux is best site for Linux on the planet..
Calinux is best site for Linux in the Universe...
Calinux@Calinux~$

  

该命令可用于文件的内容复制到一个新的文件。新文件可以重命名为任意文件。例如,将文件从当前位置复制到/tmp/目录。

#cat file1.txt> /tmp/file1.txt
Calinux@Calinux ~ $ cat filel.txt>/tmp/filel. txt
Calinux@Calinux~$ Is -l /tmp/filel.txt
-rw-r--r--l Calinux Calinux 31 Apr 6 14:12 /tmp/filel.txt
Calinux@Calinux~$

将文件从当前位置复制到/tmp/目录并更改其名称。

#cat file1.txt> /tmp/newfile.cfg
Calinux@Calinux ~$ cat filel1.txt>/tmp/newfile.cfg
Calinux@Calinux ~$ Is -1 /tmp/newfile.cfg
-rw-r--r--l Calinux Calinux 31 Apr 6 15:19 /tmp/newfilt.cfg
Calinux@Calinux ~ $

  

cat命令有一种较少用法是使用以下语法创建一个新文件。编辑完成后,点击CTRL+D保存并退出新文件。

#cat> new_file.txt
Calinux@Calinux ~ $ cat > new_file. txt
this is my new file
Calinux@Calinux ~ $ cat new_file. txt
this is my new file
Calinux@Calinux ~ $

  

为了给文件的所有输出行编号,包括空行,使用-n

#cat -n file-all.txt
|CalinuxeCalinux ~ $ cat -n file-all.txt
1 Calinux is best site for Linux
2
3 Calinux is best site for Linux on the web.
4
5 Calinux is best site for Linux on the planet..
6
7 Calinux is best site for Linux in the Universe....
Calinux@Calinux ~$

  

要仅显示每个非空行的编号,使用-b

Calinux@Calinux~ $ cat -b file-all.txt
1 Calinux is best site for Linux
2 Calinux is best site for Linux on the web.
3 Calinux is best site for Linux on the planet..
4 Calinux is best site for Linux in the Universe....
Calinux@Calinux~ $

如何在Linux中使用Tac命令

另一方面,* nix系统中有一个鲜为人知且使用较少的命令是TacTac实际上是cat命令的反向版本,该命令打印文件的每一行,从下一行开始,在上一行结束,直到计算机标准输出。

#tac file-all.txt
Calinux@tecamint ~ $ tac file-all.txt
This is number four
This is number three
This is number two
This is number one
Calinux@tecamint ~ $

  

该命令最重要的选项之一是-s开关,它根据文件中的字符串或关键字将文件的内容分隔开。

 Calinux@Calinux~$ tac file-all. txt --separator”two”
This is number three
This is number four
This is number one

  

接下来,tac命令最重要的用法是,它可以为调试日志文件提供很大的帮助,从而颠倒日志内容的时间顺序。

$ tac /var/log/auth.log

Or to display the last lines

$ tail /var/log/auth.log | tac

  

样本输出
Calinux@Calinux ~ $ tac /var/log/auth.log
pr 6 16:09:01 Calinux CRON[17714]: pam_unix(cron:session): session closed for user root
Apr 6 16:09:01 Calinux CRON[17714]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 16:05:01 Calinux CRON[17582]: pam_unix(cron:session): session closed for user root
Apr 6 16:05:01 Calinux CRON[17583]: pam_unix(cron:session): session closed for user root
Apr 6 16:05:01 Calinux CRON[17583]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 16:05:01 Calinux CRON[17582]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 16:00:01 Calinux CRON[17434]: pam_unix(cron:session): session closed for user root
....

  

Calinux@Calinux ~ $ tail /var/log/auth.log | tac
Apr 6 16:09:01 Calinux CRON[17714]: pam_unix(cron:session): session closed for user root
Apr 6 16:09:01 Calinux CRON[17714]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 16:05:01 Calinux CRON[17582]: pam_unix(cron:session): session closed for user root
Apr 6 16:05:01 Calinux CRON[17583]: pam_unix(cron:session): session closed for user root
Apr 6 16:05:01 Calinux CRON[17583]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 16:05:01 Calinux CRON[17582]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 16:00:01 Calinux CRON[17434]: pam_unix(cron:session): session closed for user root
Apr 6 16:00:01 Calinux CRON[17434]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 15:55:02 Calinux CRON[17194]: pam_unix(cron:session): session closed for user root
Apr 6 15:55:01 Calinux CRON[17195]: pam_unix(cron:session): session closed for user root
...

  

与cat命令相同,tac在处理文本方面做得很出色,但是在其他类型的文件中尤其应避免使用它,尤其是二进制文件或第一行表示将运行该文件的程序的文件。

如何在Linux中结合示例使用'cat'和'tac'命令的更多相关文章

  1. 如何在 Linux 中查看可用的网络接口

    在我们安装完一个 Linux 系统后最为常见的任务便是网络配置了.当然,你可以在安装系统时进行网络接口的配置.但是,对于某些人来说,他们更偏爱在安装完系统后再进行网络的配置或者更改现存的设置.众所周知 ...

  2. 【转】如何在 Linux 中查看可用的网络接口

    原文:https://www.cnblogs.com/qianpangzi/p/10563979.html 查看ubuntu系统当前的可用的网络接口.方法如下 -------------------- ...

  3. 如何在Linux中查看所有正在运行的进程

    如何在Linux中查看所有正在运行的进程 FROM:http://os.51cto.com/art/201101/244090.htm 进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系 ...

  4. 如何在Linux中轻松删除源安装的软件包?

    第1步:安装Stow 在这个例子中,我们使用的是CentOS,因此我们需要扩展的EPEL库.您可以使用以下命令安装它们:yum install epel-release然后,下面这段命令:yum in ...

  5. 如何在Linux中使用Firejail运行应用程序

    有时您可能希望使用在不同环境中未经过良好测试的应用程序,但您必须使用它们.在这种情况下,关注系统的安全性是正常的.在Linux中可以做的一件事是在沙箱中使用应用程序. “沙盒”是在有限环境中运行应用程 ...

  6. (转)如何在Linux中统计一个进程的线程数

    如何在Linux中统计一个进程的线程数 原文:http://os.51cto.com/art/201509/491728.htm 我正在运行一个程序,它在运行时会派生出多个线程.我想知道程序在运行时会 ...

  7. Linux入门进阶 - 如何在Linux中使用export命令

    来自:Linux迷链接:https://www.linuxmi.com/linux-export.html Linux export命令会标记哪些值需要传递给一组子进程.这是bash shell提供的 ...

  8. 如何在 Linux 中清除缓存(Cache)

              如何在 Linux 中清除缓存(Cache)            方法一: http://mp.weixin.qq.com/s?__biz=MjM5ODAzODgyMQ==&am ...

  9. 如何在 Linux 中查看进程占用的端口号【转】

    对于 Linux 系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的.如果你需要处理端口相关的问题,这篇文章可能会对你有用. 端口是 Linux 系统上特定进程之间逻辑连接的标识, ...

随机推荐

  1. 文件上传相关报错: The current request is not a multipart request或is a MultipartResolver configured?

    1:from中涉及到图片上传的就要用post提交方式.否则就会报这个错误. 2:第一中:在jsp页面的<head></head>标签里面加上<meta http-equi ...

  2. 【转】RabbitMQ 关键词

    [转]RabbitMQ 关键词 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. RabbitMQ中间件分为服务端(Rabb ...

  3. Django REST framework版本控制

    参考链接:https://www.cnblogs.com/liwenzhou/p/10269268.html 1.路由: #版本控制 re_path('^(?P<version>[v1|v ...

  4. 开源项目(4-2)手势识别-Keras/Theano/OpenCV实现的CNN手势识别

    https://github.com/asingh33/CNNGestureRecognizer 我提供了两种捕获模式: 二进制模式:在这里我首先将图像转换为灰度,然后应用高斯模糊效果和自适应阈值滤波 ...

  5. SpringBoot第三节(thymeleaf的配置与SpringBoot注解大全)

    Springboot默认是不支持JSP的,默认使用thymeleaf模板引擎.所以这里介绍一下Springboot使用Thymeleaf的实例以及遇到的问题. 1.配置与使用 1.1:在applica ...

  6. c++ socket发送数据时,sendData = char * string 导致的乱码问题

    解决方法:将string 通过copy函数复制到某个char[] 1. string res =“xxx”; char arr[100]; int len = res.copy(arr, 100); ...

  7. cube.js 学习(十一)cube + gitbase 分析git 代码

    这个是一个简单的demo,使用gitbase+cube 分析git 仓库代码 需求 我们平时使用的gitlab,或者gogs 等git 仓库管理工具,有自己的管理强项,但是对于分析上可能就不是那么强大 ...

  8. java web项目改装exe安装版

    https://blog.csdn.net/rico_zhou/article/details/79868129java简单程序打包成exe https://blog.csdn.net/rico_zh ...

  9. Min25筛

    Min25筛 我是沙雕... 从yyb博客蒯的 要求:\(\sum_{i=1}^nF(x)\) \(F(x)\)是积性函数. \(Min25\)筛能用的前提:质数处的\(f(p)\)值是关于\(p\) ...

  10. Js 之正则验证手机号、QQ、身份证等

    // 常见的 正则表达式 校验 // QQ号.手机号.Email.是否是数字.去掉前后空格.是否存在中文.邮编.身份证.URL.日期格式.IP let myRegExp = { // 检查字符串是否为 ...