cat用法

松智勇
2023-12-01
1.您常常需要将几个文件处理成一个文件并将这种处理的结果保存到一个单独的输出文件。
cat (“concatenate”的缩写)命令在其输入上接受一个或多个文件并将它们作为一个单独的文件打印到它的输
出。例如, cat chapter01 chapter02 chapter03 > book 将三个 chapterXX 文件保存在一个单独的 book 文件
中。

输入文件按照它们在 cat 命令后的排列顺序被打印,因此,要调换信息的顺序,就必须先调换输入文件的顺序。
此外,当需要处理的文件数目对于您来说过大而无法手工输入这些文件的名称时,您可以使用通配符,
如在 cat chapter* > book 中使用的那样,记住,文件名将会按升序排列。当您突然发现 chapter13 被发送到输
出中时会在 chapter2 之前,而会在 chapter02 之后时,这会引起很有意思的问题。

当 cat 的输出没有被重定向到一个文件或另一个命令的标准输出时, cat 表现出来的行为与多数命令行工具一
样,即将其输出发送到控制台。这意味着您可以使用 cat 来显示文件;例如,您可以使用 cat /etc/passwd 来显
示系统密码文件的内容。为方便起见,您应该用 less 查看大文件,如在 less /etc/passwd 中那样

2. 尽管 cat 主要用于合并文件,您还可以将它用于输入的简单自动处理。例如,您可以使用一个单独的空白行来
除去多行空白行(使用 -s 选项),这是一个在您将源代码公诸于世前进行清除工作的好办法。遗憾的是, cat
 并没有用于一次清除所有空白行的选项。但这并不是什么大问题,因为您可以使用方便的 sed 命令将这些空白
行除去:
$ cat -s /etc/X11/XF86Config | sed '/^[[:space:]]*$/d'

3. cat 的另外一个重要的功能是它可以对行进行编号。对行进行编号功能有两个选项:
    -b 选项(只能对非空白行进行编号)
    -n 选项(可以对所有行进行编号):
            $ cat -b /etc/X11/XF86Config
 
4.UUOC
摘自Shell FAQ:
   UUOC   
      This is short for "Useless use of cat". It's used to point out  that some example script has used cat when
 it could have used  redirection instead. It's more efficient to redirect input than  it is to spawn a process to
 run cat. For example     
        $ cat file | tr -d 'xyz'
      runs two processes, one for cat and one for tr. This is less efficient than
        $ tr -d 'xyz' < file
      In general, "cat file | somecommand" can be more efficiently replaced by "somecommand < file"  or
 (especially for multi-file input) 

        $ somecommand file [file ...]
      but check the man page for "somecommand" to find out if it will
      accept this syntax.

      For more details about this, as well as other things like it, see
      http://rhols66.adsl.netsonic.fi/era/unix/award.html

UUOC是"Useless use of cat"的缩写。如果脚本中使用cat命令的代码可以用"重定向"代替,你就可以称其为
UUOC。因为重定向的效率要比运行一个外部命令要高。比如:
        $ cat file | tr -d 'xyz'
      同时运行了两个进程 cat 和 tr,这种用法的效率比下面这句要低
        $ tr -d 'xyz' < file
     通常,"cat file | somecommand"可以替换成"somecommand < file"
     如果somecommand接受文件名作为参数,也可以    
 
5. 要将一个文件附加到另一个文件末尾,请输入:
        cat section1.4 >> section1
     >>(两个脱字符)将 section1.4 的副本附加至 section1 的末尾。如果要替代该文件,请使用 >(脱字符)。

6.  要将文本添加到文件的末尾,请输入:
        cat >>notes Get milk on the way home
        Ctrl-D
    此命令将 Get milk on the way home 添加至名为 notes 的文件末尾。cat 命令不会提示;它会等待您输入文本。按 Ctrl-D 键顺序来表示您已完成输入。

7.要将几个文件与从键盘输入的文本并置,请输入:
        cat section3.1 - section3.3 >section3
    该命令并置具有来自键盘的文本(由减号表示)的文件 section3.1、和文件 section3.3,然后将输出定向到名为 section3 的文件。
  
 类似资料: