cat选项分析
选项解析:
-A, --show-all 等价于 -vET -b, --number-nonblank 对非空输出行(包括仅仅有空格的行)编号,空输出行,指的是该行没有任何内容,即连续2次敲击回车按钮。 -e 等价于 -vE -E, --show-ends 在每行结束处显示 $ -n, --number 对输出的所有行编号,包括空行(连续敲击2次回车键的情况)和非空行。即所有行。 -s, --squeeze-blank 不输出多行空行,注意这里指的是如果有多个连续的空行,那么仅仅输出一个空行(空行指的是没有任何内容的行,实际上该行可能仅仅有1个换行符,如果是最后一行,那么连换行符也没有),注意空格不属于空行。 -t 与 -vT 等价 -T, --show-tabs 将跳 字符显示为 ^I -u (被忽略) -v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外,显示非打印字符。打印出非打印字符,如window编辑文档的\r\n,显示为^M
案例:查看当前目录下test.txt的文件的全部内容
[root@iZ25ja2kaemZ ~]# cat ./test.txt 1 2 3 4 5 $$$$ 6 78 8 9$ over
案例:-b --number-nonblank 对非空输出行(非空行包括仅仅有空格的行)编号,注意:空行指的是该行没有任何内容,即连续2次敲击回车按钮形成的行。(即空行指的是没有任何内容的行,实际上该行仅仅有1个换行符(连续敲击2次回车形成),或者如果是最后一行,那么连换行符也没有(通过上一行敲击回车))。
[root@iZ25ja2kaemZ ~]# cat -b ./test.txt
1 1
2 2
3 3
4 4
5 5
6 $$$$
7 6
8 78
9 8
10 9$
11 over
12 222
13 333
14
15 333
案例:-n cat 加参数-n ,文件内容输出的同时,都会在所有行(包括空行和非空行)前面加上行号;
[root@iZ25ja2kaemZ ~]# cat -n ./test.txt
1 1
2 2
3 3
4 4
5 5
6 $$$$
7 6
8 78
9 8
10 9$
11 over
12
13 222
14 333
15
16 333
案例:查看./test.txt内容,并且在每行的结尾处附加$符号;
[root@iZ25ja2kaemZ ~]# cat -E ./test.txt
1$
2$
3$
4$
5$
$$$$$
6$
78$
8$
9$$
over$
$
222$
333$
$
333$
案例:cat 可以同时显示多个文件(即同时显示2,3,4,5等多个文件)的内容,比如我们可以在一个cat命令上同时显示两个文件test.txt,test1.txt的内容;
[root@iZ25ja2kaemZ ~]# cat ./test.txt ./test1.txt //亚强:注意第1-16行尾test.txt,第17行之后为test1.txt内容
1
2
3
4
5
$$$$
6
78
8
9$
over
222
333
333
a11
a22
a33
a44
案例:[root@iZ25ja2kaemZ ~]# cat -n ./test.txt ./test1.txt //亚强:注意第1-16行尾test.txt,第17行之后为test1.txt内容,可见cat会连续对2个或更多内容的文件进行编号。
1 1
2 2
3 3
4 4
5 5
6 $$$$
7 6
8 78
9 8
10 9$
11 over
12
13 222
14 333
15
16 333
17 a11
18 a22
19 a33
20 a44
案例:-s命令, --squeeze-blank 不输出多行空行,注意这里指的是如果有多个连续的空行,那么仅仅输出一个空行(空行指的是没有任何内容的行,实际上该仅仅有1个换行符,或者如果是最后一行,那么连换行符也没有),注意有空格不属于空行 [root@iZ25ja2kaemZ ~]# cat -n ./ test5.txt //亚强:文件设计的时候4-6行仅仅存在空格符,10-13是空行。 cat: ./: Is a directory 1 1 2 2 3 3 4 5 6 7 a 8 b 9 c 10 11 12 13 14 d 15 e 16 f [root@iZ25ja2kaemZ ~]# cat -ns ./ test5.txt//亚强:文件设计的时候4-6行仅仅存在空格符,10-13是空行。可见10-13行仅仅显示了一个空行。 cat: ./: Is a directory 1 1 2 2 3 3 4 5 6 7 a 8 b 9 c 10 11 d 12 e 13 f [root@iZ25ja2kaemZ ~]#
案例:cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看,即首先显示一页(当前可视范围)内容,然后按下一次enter就显示后面1行数据,注意这里一行指的是当前可是窗口显示一行,不是文件内容用换行符分割的行;
[root@iZ25ja2kaemZ ~]# cat ./test1.txt | more
d54-a91a-6b8038852fce(2270):0.60"
string(154) "insert into questions (ques_id,papers_id,degree,type) values (‘e2ebec82-c962-4d54-a91a-6b8038852fce‘,‘89‘,0.60,‘解答题(共5小题,满分46分)‘);"
resource(5) of type (mysql link)
string(15) "试题id:2271"
string(245) "初中数学试卷(1):华师大版(16):七年级上(129)::期末试题(14):页数-1:2011-2012学年四川省资阳市简阳市七年级(上)期末数学试卷(89,100,0.63):与几何语言训练:e6c275e0-3b1c-47aa-83c1-4671
b1132dcb(2271):0.67"
string(136) "insert into questions (ques_id,papers_id,degree,type) values (‘e6c275e0-3b1c-47aa-83c1-4671b1132dcb‘,‘89‘,0.67,‘与几何语言训练‘);"
resource(5) of type (mysql link)
string(15) "试题id:2272"
string(269) "初中数学试卷(1):华师大版(16):七年级上(129)::期末试题(14):页数-1:2011-2012学年四川省资阳市简阳市七年级(上)期末数学试卷(89,100,0.63):填空,并在括号内注明说理依据.:b0500f0f-1d8
b-478d-98ba-b2dd5d550ce1(2272):0.50"
string(160) "insert into questions (ques_id,papers_id,degree,type) values (‘b0500f0f-1d8b-478d-98ba-b2dd5d550ce1‘,‘89‘,0.50,‘填空,并在括号内注明说理依据.‘);"
resource(5) of type (mysql link)
float(1.5851311683655)
有一个符合题意,请把你认为符
合题意的一项选出来,并把其*填在题后的括号内,每题3分,共30分)‘);"
resource(5) of type (mysql link)
string(15) "试题id:2280"
string(434) "初中数学试卷(1):华师大版(16):七年级上(129)::期末试题(14):页数-1:201
4-2015学年四川省遂宁市蓬溪县大石中学七年级(上)期末数学模拟试卷(90,150,0.76):选
择题(下列各题给出的四个选项
,只有一个符合题意,请把你认为符合题意的一项选出来,并把其*填在题后的括号内,
--more--
案例:[root@iZ25ja2kaemZ ~]# cat ./test3.txt ./test1.txt | more //这里用管道显示多个文件,效果为显示完test3.txt后继续显示text1.txt
综合案例:用管道显示2个文件,并给内容按照换行符进行分割,输出行号。注意more所谓的输出行是按照输出屏幕可视范围的一行,与文件内容的一行数据不同(文件内容一行是按照回车符\n分割的)。
[root@iZ25ja2kaemZ ~]# cat -n ./test3.txt ./test1.txt | more
1 d54-a91a-6b8038852fce(2270):0.60"
2 string(154) "insert into questions (ques_id,papers_id,degree,type) values (‘e2ebec82-c962-4d54-a91a-6b8038852fce‘,‘89‘,0.60,‘解答题(共5小题,满分46分)‘);"
3 resource(5) of type (mysql link)
4 string(15) "试题id:2271"
5 string(245) "初中数学试卷(1):华师大版(16):七年级上(129)::期末试题(14):页数-1:2011-2012学年四川省资阳市简阳市七年级(上)期末数学试卷(89,100,0.63):与几何语言训练:e6c275e0-3b1c-47aa-8
3c1-4671
6 b1132dcb(2271):0.67"
7 string(136) "insert into questions (ques_id,papers_id,degree,type) values (‘e6c275e0-3b1c-47aa-83c1-4671b1132dcb‘,‘89‘,0.67,‘与几何语言训练‘);"
8 resource(5) of type (mysql link)
9 string(15) "试题id:2272"
10 string(269) "初中数学试卷(1):华师大版(16):七年级上(129)::期末试题(14):页数-1:2011-2012学年四川省资阳市简阳市七年级(上)期末数学试卷(89,100,0.63):填空,并在括号内注明说理依据.:b050
0f0f-1d8
11 b-478d-98ba-b2dd5d550ce1(2272):0.50"
12 string(160) "insert into questions (ques_id,papers_id,degree,type) values (‘b0500f0f-1d8b-478d-98ba-b2dd5d550ce1‘,‘89‘,0.50,‘填空,并在括号内注明说理依据.‘);"
13 resource(5) of type (mysql link)
14 float(1.5851311683655)
15 string(76) "http://www.jyeoo.com/math/report/detail/f87560d6-f422-466f-8309-2c49d68c63ba"
16 string(18) "试卷分数:150"
17 string(25) "试卷难度系数:0.76"
--more--
案例:cat有创建文件的功能,创建文件(>)后,要以EOF结束(好像也可以使用STOP结束,亚强测试不行),特别注意:如果创建的文件名在目的目录有重名文件,那么会重写该文件,覆盖掉源文件;
de>[root@localhost ~]# cat > linuxsir.txt << EOF //创建文件linuxsir.txt,并进入编辑状态,<<EOF是进入编辑该文件的状态,方便使用EOF命令来保存并退出编辑状态。如果不用<<EOF,也会自动进入编辑状态,此时可以使用ctry+c来保存并退出该编辑状态。
> 我来测试 cat 创建文件,并且为文件输入内容; // 注:这是为linuxsir.org.txt文件输入内容;
> 北南南北 测试; //注:这是为linuxsir.org.txt文件输入内容;
> EOF // 注:保存并退出编辑状态;
[root@localhost ~]# cat linuxsirtxt //注:我们查看一下linuxsir.org.txt文件的内容;
我来测试 cat 创建文件,并且为文件输入内容;
北南南北 测试;
案例:重写文件测试(即如果新建的目的文件已经存在于目的目录,那么会覆盖掉那个已经存在的文件内容):
[root@iZ25ja2kaemZ ~]# cat test5.txt
i love china!
i also like china!
and also like you!
[root@iZ25ja2kaemZ ~]# cat >test5.txt <<EOF
> HE
> EOF
[root@iZ25ja2kaemZ ~]# cat test5.txt //可见,源文件被覆盖,然后被重写了。
HE
[root@iZ25ja2kaemZ ~]#
案例:cat 还有向已存在的文件追加(>>)内容的功能;
[root@iZ25ja2kaemZ ~]# cat > test5.txt <<EOF//新建文件内容
> i love china!
> EOF
[root@iZ25ja2kaemZ ~]# cat >> test5.txt <<EOF //查看给源文件追加内容,可以看到追加的内容会从源文件的基础上另起一行。
> i also like china!
> and also like you!
> EOF
[root@iZ25ja2kaemZ ~]# cat test5.txt //查看源文件,可以看到追加了内容。
i love china!
i also like china!
and also like you!
[root@iZ25ja2kaemZ ~]#
案例:cat 连接多个文件的内容并且输出到一个新文件中,特别注意:如果目的文件(如此案例的ceshi4.txt)在目的目录已经存在该重名文件,那么该语句会重写该文件,即会覆盖掉源文件,这里亚强不再给出覆盖文件的测试案例。
[root@iZ25ja2kaemZ ~]# cat ceshi1.txt
hello china!
[root@iZ25ja2kaemZ ~]# cat ceshi2.txt
hello beijing!
[root@iZ25ja2kaemZ ~]# cat ceshi3.txt
hello chaoyang!
[root@iZ25ja2kaemZ ~]# cat ceshi1.txt ceshi2.txt ceshi3.txt > ceshi4.txt //将 ceshi1.txt ceshi2.txt ceshi3.txt 这3个文件链接起来并写入到文件ceshi4.txt,注意如果目的目录已经处在ceshi4.txt,那么ceshi4.txt文件会被重写。
[root@iZ25ja2kaemZ ~]# cat ceshi4.txt
hello china!
hello beijing!
hello chaoyang!
cat 把一个或多个已存在的文件内容,追加(>>)到一个已存在的文件中
[root@iZ25ja2kaemZ ~]# cat ceshi1.txt
hello china!
[root@iZ25ja2kaemZ ~]# cat ceshi2.txt
hello beijing!
[root@iZ25ja2kaemZ ~]# cat ceshi3.txt
love you!
[root@iZ25ja2kaemZ ~]# cat ceshi1.txt ceshi2.txt >>ceshi3.txt //亚强:这里讲ceshi1.txt,ceshi2.txt的内容追加到ceshi3.txt文件中。
[root@iZ25ja2kaemZ ~]# cat ceshi3.txt
love you!
hello china!
hello beijing!
案例:打印出非打印字符,如window编辑文档的\r\n,显示为^M
[root@iZ25sngm7hfZ wyq]# cat -v root.sh #!/bin/bash^M girl2=‘wd‘;^M echo "see ${girl2}";^M [root@iZ25sngm7hfZ wyq]# cat root.sh #!/bin/bash girl2=‘wd‘; echo "see ${girl2}"; [root@iZ25sngm7hfZ wyq]#