linux上编写c程序实现cat,Linux cat命令

Linux cat命令

Linux cat命令是用来连接文件并打印输出到标准输出设备

cat 命令可以用来显示文本文件的内容(类似于 DOS 下的 type 命令),也可以把几个文件内容附加到另一个文件中,即连接合并文件。

关于此命令,有人认为写 cat 命令的人是因为喜欢猫,因此给此命令起名为“cat”,其实不然,cat 是 concatenate(连接、连在一起的;)的简写。

语法格式

cat [-AbeEnstTuv] [--help] [--version] fileName

cat主要有三大功能:

一次显示整个文件内容

创建文件, 只能创建新文件,不能编辑已有文件.

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

我们准备两个文件测试 cat 命名的用法,在linux中通过ls查看当前目录中的文件

[root@iz8vbbxoyfcgyzkxcspg04z test]# ls

t1.txt t2.txt

我们已经清楚当前目录中有t1.txt 和 t2.txt 这两个文件,如何查看文件的内容呢?

cat 一次显示整个文件内容

例如,我想查看t1.txt文件的内容,cat 命令如下:

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t1.txt

HTML

CSS

JavaScript

Vue.js

AJAX

jQuery

Python

Java

linux

查看t2.txt文件的内容,cat 命令如下:

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t2.txt

baidu.com

xinbiancheng.cn

google.cn

如果想对显示的内容都加行号,如何操作呢?

cat -n  对输出的所有行进行编号

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -n t1.txt

1HTML

2 #-n 参数空白行 也会有行号

3CSS

4JavaScript

5Vue.js

6AJAX

7jQuery

8Python

9Java

10

11linux

如果想对非空白行进行编号,如何操作呢?

cat -b  对非空白行进行编号

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -b t1.txt

1HTML

#cat 使用-b 参数是空白行没有编号

2CSS

3JavaScript

4Vue.js

5AJAX

6jQuery

7Python

8Java

9linux

cat 命令查看 t2.txt 内容

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -n t2.txt

1baidu.com

2

3

4xinbiancheng.cn

5

6google.cn

通过cat 命令查看 t2.txt 内容,我们发现 baidu.com 和 xinbiancheng.cn 中间有两个空行,分别是第2行和第3行,如何合并2个以上的空白行呢?

cat -s 当遇到有连续 2 行以上的空白行时,就替换为 1 行的空白行

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -n -s t2.txt

1baidu.com

2 #cat -s 参数可以合并多个空白行为1行空白行

3xinbiancheng.cn

4

5google.cn

cat -E 列出每行结尾的回车符 $

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -E t2.txt

baidu.com$

$

$

xinbiancheng.cn$

$

google.cn$

为了测试 cat -A 的用用法我们通过vim创建一个 t3.txt 文件,内容如下:

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t3.txt

1 2    3

4 5 6

其中2和3中间是Tab 键,在实际开发时,我们很难通过肉眼分辨那个是空格,那个是Tab 键

cat -A ,则相当于使用了 "-vET" 选项,可以查看文本中的所有隐藏符号,包括回车符($)、Tab 键(^I)等

例如:

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -A t3.txt

1 2^I3$ #cat -A 一眼就看出2和3中间是Tab键,因为显示的是 ^I

4 5 6$ #换行用 $表示

cat 加参数-b  和 nl 工具差不多,文件内容输出的同时,会在非空白行前面加上行号;

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat -b t2.txt

1baidu.com

2xinbiancheng.cn

3google.cn

[root@iz8vbbxoyfcgyzkxcspg04z test]# nl t2.txt

1baidu.com

2xinbiancheng.cn

3google.cn

cat 同时显示多个文件的内容

[root@iz8vbbxoyfcgyzkxcspg04z test]# ls

t1.txt t2.txt t3.txt

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t1.txt t2.txt t3.txt

HTML

CSS

JavaScript

Vue.js

AJAX

jQuery

Python

Java

linux

baidu.com

xinbiancheng.cn

google.cn

1 23

4 5 6

cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看;

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t1.txt t2.txt t3.txt | more

cat 创建文件, 只能创建新文件,不能编辑已有文件.

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat >log.txt<

> a

> b

> c

> EOF

[root@iz8vbbxoyfcgyzkxcspg04z test]# ls

log.txt t1.txt t2.txt t3.txt #通过ls 命令我们发现log.txt文件已经创建好了

查看log.txt文件的内容

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat log.txt

a

b

c

我们准备向log.txt文件追加一些内容

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat >log.txt<

> 1

> 2

> 3

> EOF

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat log.txt

1

2

3

我们发现之前的内容a b c 换成了 1 2 3 ,并没有追加,而是覆盖了之前的内容。

总结:cat >文件名<,是覆盖之前的内容。

cat 追加内容

cat >>文件名<,是会追加内容

实例如下:

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat >>log.txt<

> a

> b

> c

> EOF

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat log.txt

1

2

3

a

b

c

cat 将几个文件合并为一个文件

cat 连接多个文件的内容并且输出到一个文件中,此方法会覆盖内容

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t1.txt t2.txt > hebing.txt

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat hebing.txt

HTML

CSS

JavaScript

Vue.js

AJAX

jQuery

Python

Java

linux

baidu.com

xinbiancheng.cn

google.cn

以上实例分析:通过cat 命令 将t1.txt 和 t2.txt 两个文件 合并成一个文件 hebing.txt,中间用一个 >符号连接,会覆盖hebing.txt的内容

cat 追加内容,到文件中,此方法不会覆盖内容

方法同上:只是中间用2个 >符号连接

实例如下:

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat t3.txt >> hebing.txt

[root@iz8vbbxoyfcgyzkxcspg04z test]# cat hebing.txt

HTML

CSS

JavaScript

Vue.js

AJAX

jQuery

Python

Java

linux

baidu.com

xinbiancheng.cn

google.cn

1 23 #通cat >> 新追加的内容

4 5 6

cat 注意事项:1个 >符号连接会覆盖内容,2个 >符号连接是追加内容,大家在使用的时候要小心和注意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值