cat
cat
程序将数据不加改变的复制到标准输出,数据可以来自于标注输入,也可以来自于文件。
下面的程序将输出hello.txt
文件的内容:
$ cat hello.txt
cat
命令常被用作组合多个文件,下面的命令将hello.txt
和source.list.bk
文件的内容组合保存到bk.txt
中:
$ cat hello.txt source.list.bk > bk.txt
split
使用cat
可以组合文件,使用split
可以分割文件。
split
默认将文件每1000行存为一个新文件,如果最后一次分割后剩余的不足1000行,则将剩余的行作为一个文件,也可以使用-l
命令选项指定每个新文件的行数:
$ split -l 4 bk.txt
上面的命令将bk.txt
文件每4行分割为一个新文件,bk.txt
文件共15行,因此生成4个文件(前三个每个都是4行,最后一个是3行),其名字依次为xaa
、xab
、xac
和xad
。
split
生成的新文件的默认名字为xaa
、xab
、xac
……,使用-d
选项指定使用数字作为新文件名后缀,默认是两位数字,还可以在文件名后面指定新文件的文件名前缀:
$ split -d -l 4 bk.txt source
生成的四个文件的文件名为source00
、source01
、source02
和source03
。
使用-a
选项指定数字或者字母后缀的位数,下面的命令指定使用数字后缀且数字位数为3位:
$ split -d -a 3 -l 4 bk.txt source_
生成的四个文件的文件名依次是:source_000
、source_001
、source_002
和source_003
。
tac
tac
逆序输出每一行:
$ cat output
li
qian
sun
wang
wu
zhao
zheng
zhou
$ tac output
zhou
zheng
zhao
wu
wang
sun
qian
li
rev
rev
对每一行的内容进行逆序输出:
$ cat output
li
qian
sun
wang
wu
zhao
zheng
zhou
$ cat output | tac
zhou
zheng
zhao
wu
wang
sun
qian
li
$ cat output | tac | rev
uohz
gnehz
oahz
uw
gnaw
nus
naiq
il
head, tail
head
默认显示文件的前10行内容,tail
默认显示文件的最后10行内容。
它们都可以使用-n
指定显示的行数:
$ head -n 2 bk.txt
Hello, vim!ello
Hello, vim!Hello
$ tail -n 5 bk.txt
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
cut
cat
命令在每行信息中进行切割。
下面是$PATH
变量的内容:
$ echo $PATH
/home/tom/bin:/home/tom/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
在该变量中,每一个目录项由:
进行分割,第1个目录项是/home/tom/bin
,第2个目录项是/home/tom/.local/bin
……
cut
命令使用-d '字符'
选项即可使用指定的字符进行切分,使用-f
选项即可指定分割后要保留的部分:
$ echo $PATH | cut -d ':' -f 1,3
/home/tom/bin:/usr/local/sbin
上面的语句中,cut
使用:
对$PATH
变量进行了切分,并且保留了其第1和第3项。
对于下面这样很“整齐”的文件:
$ cat source.list.bk
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
还可以对cut
使用-c
命令选项指定截取的字符,比如cut -c 2-4
表示截取每行的第2-4个字符。下面的命令截取每行的39至最后一个字符:
$ cat source.list.bk | cut -c 39-
xenial main restricted universe multiverse
xenial-security main restricted universe multiverse
xenial-updates main restricted universe multiverse
xenial-proposed main restricted universe multiverse
xenial-backports main restricted universe multiverse