2.2.1实战演练
1、 打印单个文件的内容
caicai@test-hp:~/2$ cat file1.txt
file1 txt
2、 打印多个文件的内容
caicai@test-hp:~/2$ cat file1.txt file2.txt file3.txt
file1 txt
file2 txt
file3 txt
cat 命令不仅可以读取文件、拼接数据,还能够从标准输入中读取。
管道操作符可以将数据作为cat命令的标准输入:
OUTPUT_FROM_SOME COMMANDS | cat
cat也可以将文件内容与终端输入拼接在一起。
下面的命令将stdin和另一个文件中的数据组合在一起:
caicai@test-hp:~/2$ echo 'Text through stdin' | cat - file.txt
Text through stdin
file
在上例中,-被作为stdin文本的文件名。
2.2.2补充内容
cat命令还有一些用于文本查看的选项。可以在终端会话中输入man cat 来查看完整的选项列表。
1、去掉换行符
caicai@test-hp:~/2$ cat file.txt | tr -s '\n'
two
two two
tow tow
2、将制表符显示为^I
单从视觉上很难将制表符同连续的空格区分。对于Python而言,制表符和空格是区别对待的。在文本编辑器中,两者看起来差不多,但是解释器将其视为不同的缩进。仅仅在文本编辑器中进行观察是很难发现这种错误的。cat有一个
caicai@test-hp:~/2$ cat file.py
def function();
var = 5
next = 6
Ithird = 7
caicai@test-hp:~/2$ cat -T file.py
def function();
^Ivar = 5
^I^Inext = 6
^IIthird = 7^I
3、行号
cat 命令的-n选项会在输出的每一行内容之前加上行号。例如:
caicai@test-hp:~/2$ cat lines.txt
line a
line b
line c
line d
caicai@test-hp:~/2$ cat -n lines.txt
1 line a
2 line b
3 line c
4 line d
别担心,cat命令绝不会修改你的文件,它只是根据用户提供的选项在stdout中生成一个修改过的输出而已。可别尝试用重定向覆盖输入文件。shell在打开输入文件之前会先创建新的输出文件。cat命令不允许使用相同的文件作为输入和重定向后的输出。利用管道并重定向输出会清空输入文件。
caicai@test-hp:~/2$ echo "This will vanish" > myfile
caicai@test-hp:~/2$ cat -n myfile >myfile
cat: myfile:输入文件是输出文件
caicai@test-hp:~/2$ cat myfile | cat -n >myfile
caicai@test-hp:~/2$ ls -l myfile
-rw-rw-r-- 1 caicai caicai 0 3月 7 14:24 myfile #myfile为空文件
选项-n会为包括空行在内的所有行生成行号。如果你想跳过空白行,可以使用选项-b。
网友评论