美文网首页
第2章-命令之乐(02用cat进行拼接)

第2章-命令之乐(02用cat进行拼接)

作者: 昨天剩下的一杯冷茶 | 来源:发表于2019-03-07 14:39 被阅读0次

    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。

    相关文章

      网友评论

          本文标题:第2章-命令之乐(02用cat进行拼接)

          本文链接:https://www.haomeiwen.com/subject/veiqpqtx.html