Linux重要命令-cat

参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting

1.一次显示整个文件。

$ cat filename


2.从键盘创建一个文件。

$ cat > filename  #只能创建新文件,不能编辑已有文件.从用户的等待输入,输入所需的文本,然后按CTRL + D(按住Ctrl键并输入“D”)退出。 文本将被写在TEST2文件。 你可以看到文件包含以下cat命令。


3.在终端中查看多个文件的包含

cat test test1  #它会显示包含终端测试和test1的文件

4.将几个文件合并为一个文件

$cat file1 file2 > file

 

5.使用带有更多&更少选项的Cat命令

如果有大量的文件包含不适合在输出端子和屏幕滚动起来非常快,我们可以多和少用参数与cat命令如上表演。

# cat song.txt | more
# cat song.txt | less

6.在文件中显示行号

随着-n选项,你可以看到在输出端的文件song.txt的行号。

cat -n song.txt

7.在文件结尾处显示$

在下面,可以用-e选项看到'$'是在行的端部示出以及在空间表示'$'如果存在段落之间的任何间隙。此选项对于在一行中挤压多行非常有用。

# cat -e test
hello everyone, how do you do?$
$
Hey, am fine.$
How's your training going on?$
$

8.在文件中显示制表符分隔的行

在下面的输出,我们可以看到TAB空间与'^ I'字填满。

# cat -T test
hello ^Ieveryone, how do you do?
Hey, ^Iam fine.
^I^IHow's your training ^Igoing on?
Let's do ^Isome practice in Linux.

 

9.一次显示多个文件

在下面的例子中,我们有三个档测试 ,TEST1TEST2,并能看到如上图所示的文件包含的内容。 我们需要与每个文件分开;(分号)。

# cat test; cat test1; cat test2
This is test file
This is test1 file.
This is test2 file.

10.把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里

cat -n textfile1 > textfile2  #会覆盖textfile2的内容

 

11.把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里

cat -b textfile1 textfile2 >> textfile3

 

12.使用重定向运算符重定向标准输入

当您使用标准输入重定向“<”(不足符号,),使用它的文件名test2的作为命令的输出输入一个将在终端进行显示。

# cat < test2
This is test2 file.

13.重定向单个文件中包含的多个文件

这将创建一个名为TEST3,所有输出将在新创建的文件重定向。

# cat test test1 test2 > test3

14.排序包含单个文件中的多个文件

这将创建一个文件TEST4cat命令的输出管道进行排序和结果将在一个新创建的文件重定向。

# cat test test1 test2 test3 | sort > test4


15.把test.txt文件扔进垃圾箱,赋空值test.txt

cat /dev/null > /etc/test.txt  

 

16.利用cat创建文件

如果原来没有 b.txt 文件。那么:

:~# cat >b.txt <<EOF
> EOF

输入第一行后,输入EOF,回车,就可以生成一个 b.txt 文件。其中EOF是告诉 bash 哪个符号代表文件结束。当然你也可以使用自己习惯的符号。

17.利用cat清空文件内容

如果 c.txt 文件有很多内容,而你想要清空的话,同样可以使用上面提到的命令形式:

:~# cat >c.txt <<EOF
> EOF

 

18.用 cat 命令向文件中写入内容的时候,对于 $ 符号的处理。

有些时候可能会利用cat命令生成一些 Shell 脚本文件。这个时候如果直接写 符号,有可能被认为是调用变量,导致无法写入文件。比如像下面一样直接输入符号,有可能被认为是调用变量,导致无法写入文件。比如像下面一样直接输入 的话:

:~# cat >d.sh <<EOF
> DATE=$(date +%Y%m%d)
> mkdir /root/$DATE
> EOF

那么 $ 符号并没有输入到文件中。文件内容会变成如下的样子

:~# cat d.sh
DATE=20161006
mkdir /root/

那么如果我们要把 符号正常输入到文件中,该怎么办呢?答案是需要在符号正常输入到文件中,该怎么办呢?答案是需要在 符号前面加 \ 。命令如下:

~# cat >d.sh <<EOF
> DATE=\$(date +%Y%m%d)
> mkdir /root/\$DATE
> EOF

这样把 $ 转义,就可以得到正常的文件内容了:

:~# cat d.sh
DATE=$(date +%Y%m%d)
mkdir /root/$DATE

19.基本用法:

[root@localhost ~]# cat test #普通输出
1111111111
2222222222
3333333333
[root@localhost ~]# cat -n test #开头显示行号
1 1111111111
2
3
4 2222222222
5
6 3333333333
[root@localhost ~]# cat -E test #以$结束
1111111111$
$
$
2222222222$
$
3333333333$
[root@localhost ~]# cat -s test #超过二个空行,合并成一个
1111111111
2222222222
3333333333
[root@localhost ~]# cat -ns test #去空行,加行号
1 1111111111
2
3 2222222222
4
5 3333333333

注:tac是cat的倒写,意思也和它是相反的。cat是从第一行显示到最后一行,而tac是从最后一行显示到第一行,而rev 则是从最后一个字符显示到第一个字符

应用: tac nginx_access_webapi_v2.log |grep '101.200.184.79'|head -n 20 #倒序搜索log中的关键字符ip,保留前20行记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值