文本文件编辑命令

  • 1、cat
  • 2、more
  • 3、head
  • 4、tail
  • 5、tr
  • 6、wc
  • 7、stat
  • 8、grep
  • 9、cut
  • 10、diff
  • 11、uniq
  • 12、sort


在 Linux系统中,一切都是文件。

1、cat

cat 命令用于查看纯文本文件(内容较少的),英文全称为“concatenate”,语法格式为“cat [参数] 文件名称”

Linux 系统中有多个用于查看文本内容的命令,每个命令都有自己的特点,比如这个 cat 命令就是用于查看内容较少的纯文本文件。cat 这个命令也很好记,因为 cat 在英语中是“猫”的意思,小猫咪是不是给您一种娇小、可爱的感觉呢?
如果在查看文本内容时还想顺便显示行号的话,不妨在 cat 命令后面追加一个-n 参数:

cat -n initial-setup-ks.cfg

2、more

more 命令用于查看纯文本文件(内容较多的),语法格式为“more [参数] 文件名称”。
如果需要阅读长篇小说或者非常长的配置文件,那么“小猫咪”可就真的不适合了。因
为一旦使用 cat 命令阅读长篇的文本内容,信息就会在屏幕上快速翻滚,导致自己还没有来得及看到,内容就已经翻篇了。因此对于长篇的文本内容,推荐使用 more 命令来查看。more命令会在最下面使用百分比的形式来提示您已经阅读了多少内容;还可以使用空格键或回车键向下翻页:

more initial-setup-ks.cfg

3、head

head 命令用于查看纯文本文件的前 N 行,语法格式为“head [参数] 文件名称”。在阅读文本内容时,谁也难以保证会按照从头到尾的顺序往下看完整个文件。如果只想查看文本中前 10 行的内容,该怎么办呢?head 命令就能派上用场了:

head -n 10 initial-setup-ks.cfg

4、tail

tail 命令用于查看纯文本文件的后 N 行或持续刷新文件的最新内容,语法格式为“tail [参
数] 文件名称”。

我们可能还会遇到另外一种情况,比如需要查看文本内容的最后 10 行,这时就需要用到tail 命令了。tail 命令的操作方法与 head 命令非常相似,只需要执行“tail -n 20 文件名称”.

tail -n 10 initial-setup-ks.cfg

tail 命令最强悍的功能是能够持续刷新一个文件的内容,当想要实时查看最新的日志文件
时,这特别有用,此时的命令格式为“tail -f 文件名称”:

tail -f /var/log/messages

5、tr

tr 命令用于替换文本内容中的字符,英文全称为“translate”,语法格式为“tr [原始字符]
[目标字符]”。

在很多时候,我们想要快速地替换文本中的一些词汇,又或者想把整个文本内容都进行
替换。如果进行手工替换,难免工作量太大,尤其是需要处理大批量的内容时,进行手工替换更是不现实。这时,就可以先使用 cat 命令读取待处理的文本,然后通过管道符把这些文本内容传递给 tr 命令进行替换操作即可。例如,把某个文本内容中的英文全部替换为大写

cat anaconda-ks.cfg |tr [a-z] [A-Z]

6、wc

wc 命令用于统计指定文本文件的行数、字数或字节数,英文全称为“word counts”,语
法格式为“wc [参数] 文件名称”。

wc 命令用于统计文本的行数、字数、字节数等。wc 的参数以及相应的作用如表所示。

就这么学Linux 文本文件编辑命令_linux

在 Linux 系统中,/etc/passwd 是用于保存所有用户信息的文件,要统计当前系统中有多
少个用户,可以使用下面的命令来进行查询:

wc -l /etc/passwd

7、stat

stat 命令用于查看文件的具体存储细节和时间等信息,英文全称为“status”,语法格式为“stat 文件名称”。
其实,除了修改时间之外,Linux 系统中的文件包含 3 种时间状态,分别是 Access Time(内容最后一次被访问的时间,简称为 Atime),Modify Time(内容最后一次被修改的时间,简称为 Mtime)以及 Change Time(文件属性最后一次被修改的时间,简称为 Ctime)。

下面使用 state 命令查看文件的这 3 种时间状态信息:

stat anaconda-ks.cfg

8、grep

grep 命令用于按行提取文本内容,语法格式为“grep [参数] 文件名称”。

grep 命令是用途最广泛的文本搜索匹配工具。它虽然有很多参数,但是大多数基本上都用不到。

在这里只讲 grep 命令两个最常用的参数:
➢ -n 参数用来显示搜索到的信息的行号;
➢ -v 参数用于反选信息(即没有包含关键词的所有信息行)。

这两个参数几乎能完成您日后 80%的工作需要,至于其他上百个参数,即使以后在工作
期间遇到了,再使用 man grep 命令查询也来得及。

grep 命令的参数及其作用如表所示。

就这么学Linux 文本文件编辑命令_文件名_02

在 Linux 系统中,/etc/passwd 文件保存着所有的用户信息,而一旦用户的登录终端被设置成/sbin/nologin,则不再允许登录系统,因此可以使用 grep 命令查找出当前系统中不允许登录系统的所有用户的信息:

grep /sbin/nologin /etc/passwd

9、cut

cut 命令用于按“列”提取文本内容,语法格式为“cut [参数] 文件名称”。

系统文件在保存用户数据信息时,每一项值之间是采用冒号来间隔的,先查看一下:

head -n 2 /etc/passwd

般而言,按基于“行”的方式来提取数据是比较简单的,只需要设置好要搜索的关键词即可。但是如果按“列”搜索,不仅要使用-f 参数设置需要查看的列数,还需要使用-d 参
数来设置间隔符号。

接下来使用下述命令尝试提取出 passwd 文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容:

cut -d : -f 1 /etc/passwd

10、diff

diff 命令用于比较多个文件之间内容的差异,英文全称为“different”,语法格式为“diff [参数] 文件名称 A 文件名称 B”。

在使用 diff 命令时,不仅可以使用–brief 参数来确认两个文件是否相同,还可以使用-c
参数来详细比较出多个文件的差异之处。这绝对是判断文件是否被篡改的有力神器。例如,先使用 cat 命令分别查看 diff_A.txt 和 diff_B.txt 文件的内容,然后进行比较:

cat diff_A.txt
cat diff_B.txt

接下来使用 diff --brief 命令显示比较后的结果,判断文件是否相同。最后使用带有-c 参数的 diff 命令来描述文件内容具体的不同:

diff --brief diff_A.txt diff_B.txt
diff -c diff_A.txt diff_B.txt

11、uniq

uniq 命令用于去除文本中连续的重复行,英文全称为“unique”,语法格式为“uniq [参数] 文
件名称”。

由 uniq 命令的英文全称 unique(独特的,唯一的)可知,该命令的作用是用来去除文本文件中连续的重复行,中间不能夹杂其他文本行(非相邻的默认不会去重)—去除了重复的,保留的都是唯一的,自然也就是“独特的”“唯一的”了。
我们使用 uniq 命令对两个文本内容进行操作,区别一目了然:

cat uniq.txt
uniq uniq.txt

12、sort

sort 命令用于对文本内容进行再排序,语法格式为“sort [参数] 文件名称”。

有时文本中的内容顺序不正确,一行行地手动修改实在太麻烦了。此时使用 sort 命令就
再合适不过了,它能够对文本内容进行再次排序。这个命令千万不能只讲理论,一定要借助于实战让大家一看就懂。sort 命令的参数及其作用如表所示。

就这么学Linux 文本文件编辑命令_运维_03


在执行 sort 命令后默认会按照字母顺序进行排序,非常方便:

cat fruit.txt
sort fruit.txt

此外,与 uniq 命令不同,sort 命令是无论内容行之间是否夹杂有其他内容,只要有两个一模一样的内容行,立马就可以使用-u 参数进行去重操作:

cat sort.txt
sort -u sort.txt

想对数字进行排序?一点问题都没有,而且完全不用担心出现 1 大于 20 这种问题(因为有些命令只比较数字的第一位,忽略了十、百、千的位):

cat number.txt
sort -n number.txt

下面的内容节选自/etc/passwd 文件中的前 5个字段,并且进行了混乱排序。

cat user.txt

不难看出,上面其实是 5 个字段,各个字段之间是用了冒号进行间隔,如果想以第 3 个
字段中的数字作为排序依据,那么可以用-t 参数指定间隔符,用-k 参数指定第几列,用-n 参数进行数字排序来搞定:

sort -t : -k 3 -n user.txt