查看文件及内容处理命令(21个命令)
cat命令
cat命令:用于查看纯文本文件(内容较少的)
格式:“cat [选项] [文件]”。
参数:
参数 | 作用 |
---|---|
-n | 显示行号 |
例子:
[root@localhost ~]# cat -n filecheck.md5
1 d41d8cd98f00b204e9800998ecf8427e 1.test
2 d41d8cd98f00b204e9800998ecf8427e 2.test
tac命令
tac命令:反向显示文件内容。
格式:“tac [选项] [文件]”。
例子:
[root@localhost ~]# tac filecheck.md5
d41d8cd98f00b204e9800998ecf8427e 2.test
d41d8cd98f00b204e9800998ecf8427e 1.test
more命令
more命令:用于查看纯文本文件(内容较多的)
格式:“more [选项]文件”。
操作:空格或回车下一页
less命令
less命令:less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
格式:less [选项] 文件
head命令
head命令:用于查看纯文本文档的前N行
格式:“head [选项] [文件]”。
tail命令
tail命令:用于查看纯文本文档的后N行或持续刷新内容
格式:“tail [选项] [文件]”。
cut命令
cut命令:用于按“列”提取文本字符
格式:“cut [参数] 文本”。
参数:
参数 | 作用 |
---|---|
-d | 设置间隔符号 |
-f | 设置需要看的列数 |
例子:
# 获取用户名
[root@localhost ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
···
split命令
split命令:用于将一个文件分割成数个。
该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。
格式: split [OPTION]... [INPUT [PREFIX]]
split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
参数:
参数 | 作用 |
---|---|
-<行数> | 指定每多少行切成一个小文件 |
-b<字节> | 指定每多少字节切成一个小文件 |
--help | 在线帮助 |
-version | 显示版本信息 |
-C<字节> | 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性 |
[输出文件名] | 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号 |
例子:
# 每3行分割
[root@localhost ~]# split -3 pwd aaa
# 查看文件
[root@localhost ~]# ls aaa*
aaaaa aaaab aaaac aaaad aaaae aaaaf aaaag aaaah
[root@localhost ~]# cat aaaaa
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
paste命令
paste命令:用于合并文件的列。
格式: paste [OPTION]... [FILE]...
参数:
参数 | 作用 |
---|---|
-d<间隔字符>或--delimiters=<间隔字符> | 用指定的间隔字符取代跳格字符。 |
-s或--serial | 串列进行而非平行处理。 |
[文件…] | 指定操作的文件路径 |
例子:
[root@localhost ~]# cat aaaaa
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@localhost ~]# cat aaaab
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
# paste合并的效果
[root@localhost ~]# paste aaaaa aaaab
root:x:0:0:root:/root:/bin/bash adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync
# 换行符做分隔
[root@localhost ~]# paste -d "\n" aaaaa aaaab
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
sort命令
sort命令:对文本文件按行排序
格式:sort [OPTION]... [FILE]...
sort [OPTION]... --files0-from=F
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
参数:
参数 | 作用 |
---|---|
-b | 忽略每行前面出现的空格符号 |
-c | 检查文件是否已经按照顺序排序 |
-d | 处理英文字符,数字及空格字符外,忽略其他字符 |
-f | 将小写字符视为大写字符 |
-i | 除了040至176之间的ASCII字符外,忽略其他的字符。 |
-m | 将几个排序好的文件进行合并。 |
-M | 将前面3个字母依照月份的缩写进行排序。 |
-n | 依照数值的大小排序。 |
-o<输出文件> | 将排序后的结果存入指定的文件。 |
-r | 以相反的顺序来排序。 |
-t<分隔字符> | 指定排序时所用的栏位分隔字符。 |
+<起始栏位>-<结束栏位> | 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 |
例子:
# 排序
[root@localhost ~]# sort aaa
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
# 指定分隔符,第k列作为排序依据
[root@localhost ~]# sort -t: -k 3 aaa
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
uniq命令
uniq命令:用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
格式: uniq [OPTION]... [INPUT [OUTPUT]]
uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
参数:
参数 | 作用 |
---|---|
-c | 在每列旁边显示该行重复出现的次数。 |
-d | 仅显示重复出现的行列。 |
-f<栏位>或--skip-fields=<栏位> | 忽略比较指定的栏位。 |
-s<字符位置>或--skip-chars=<字符位置> | 忽略比较指定的字符。 |
-u或--unique | 仅显示出一次的行列。 |
-w<字符位置>或--check-chars=<字符位置> | 指定要比较的字符。 |
[输入文件] | 指定已排序好的文本文件。如果不指定此项,则从标准读取数据; |
[输出文件] | 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。 |
例子
# 直接使用只能去重相邻行的
# 源文件
[root@localhost ~]# cat 1.txt
hello world
nihao
nihao
nihao
hello world
[root@localhost ~]# uniq -c 1.txt
1 hello world
3 nihao
1 hello world
# 统计重复行的次数
[root@localhost ~]# sort 1.txt |uniq -c
2 hello world
3 nihao
wc命令
wc命令:用于统计指定文本的行数、字数、字节数
格式:“wc [参数] 文本”。
参数:
参数 | 作用 |
---|---|
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
iconv命令
iconv命令:对于给定文件把它的内容从一种编码转换成另一种编码。
格式:iconv [选项...] [文件...]
参数:
参数 | 作用 |
---|---|
-f, --from-code=NAME | 原始文本编码 |
-t ,--to-code=NAME | 输出文本编码 |
-o, --output=FILE | 输出文件 |
-c | 忽略输出中的非法字符 |
例子:
# 修改编码为gbk
[root@localhost ~]# vim 2.txt
[root@localhost ~]# iconv -f UTF-8 -t GBK 1.txt -o 2.txt
# 查看文件编码类型
[root@localhost ~]# file 2.txt
2.txt: ISO-8859 text
dos2unix命令
dos2unix命令:将 DOS 格式文件转换成 UNIX 格式。
格式:dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]
参数:
参数 | 作用 |
---|---|
-k | 保持输出文件的日期不变 |
-q | 安静模式,不提示任何警告信息 |
-V | 查看版本 |
-c | 转换模式,模式有:ASCII, 7bit, ISO, Mac, 默认是:ASCII |
-o | 写入到源文件 |
-n | 写入到新文件 |
例子
最简单的用法就是dos2unix直接跟上文件名:
# 加不加-o效果一样
[root@localhost ~]# dos2unix 1.txt
dos2unix: converting file 1.txt to Unix format ...
[root@localhost ~]# dos2unix -o 1.txt
dos2unix: converting file 1.txt to Unix format ...
diff命令
diff命令:用于比较多个文本文件的差异
格式:“diff [参数] 文件”。
参数:
参数 | 作用 |
---|---|
-q, --brief | 确认两个文件是否不同 |
-c, -C NUM, --context[=NUM] | 复制上下文的输出行数(默认为3行) |
例子:
# 文件相同无输出,文件不同会显示不同
[root@localhost ~]# diff -q 1.txt 1.txt.bak
[root@localhost ~]# vim 1.txt.bak
[root@localhost ~]# diff -q 1.txt 1.txt.bak
Files 1.txt and 1.txt.bak differ
# 显示不同的上下文(默认三行)
[root@localhost ~]# diff -c 1.txt 1.txt.bak
*** 1.txt 2019-07-18 04:01:22.776329996 -0400
--- 1.txt.bak 2019-07-18 04:01:57.407055344 -0400
***************
*** 3,5 ****
--- 3,6 ----
nihao
你好
hello world
+ ooooo
# 指定上下文5行
[root@localhost ~]# diff -C 5 1.txt 1.txt.bak
*** 1.txt 2019-07-18 04:01:22.776329996 -0400
--- 1.txt.bak 2019-07-18 04:01:57.407055344 -0400
***************
*** 1,5 ****
--- 1,6 ----
hello world
nihao
nihao
你好
hello world
+ ooooo
vimdiff命令
vimdiff命令:命令行可视化文件比较工具,常用于文本文件。
格式:vimdiff [options] file1 file2 [file3 [file4]]
例子:
vimdiff 1.txt 1.txt.bak
rev命令
rev命令:反转文件的每行内容
格式:rev [options] [file ...]
例子:
[root@localhost ~]# cat 1.txt
hello world
nihao
nihao
你好
hello world
# 当前行反向输出
[root@localhost ~]# rev 1.txt
dlrow olleh
oahin
oahin
好你
dlrow olleh
tr命令
tr命令:用于替换文本文件中的字符
格式:“tr [原始字符] [目标字符]”。
例子:
[root@localhost ~]# cat 1.txt | tr [a-z] [A-Z]
HELLO WORLD
NIHAO
NIHAO
你好
HELLO WORLD
join命令
join命令:用来将两个文件中,制定栏位内容相同的行连接起来。
格式:join [OPTION]... FILE1 FILE2
参数:
参数 | 作用 |
---|---|
-a<1或2> | 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行; |
-e<字符串> | 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串; |
-i或--ignore-case | 比较栏位内容时,忽略大小写的差异; |
-o<格式> | 按照指定的格式来显示结果; |
-t<字符> | 使用栏位的分割字符; |
-v<1或2> | 更-a相同,但是只显示文件中没有相同栏位的行; |
-1<栏位> | 连接[文件1]指定的栏位; |
-2<栏位> | 连接[文件2]指定的栏位。 |
例子
# 两个文件内容如下
[root@localhost ~]# cat 1.txt
hello 111
world 222
ni 333
hao 444
[root@localhost ~]# cat 1.txt.bak
hello 50人
world 100人
ni 1000人
hao 150人
# 合并(属于等值连接,没有匹配的不连接)
[root@localhost ~]# join 1.txt 1.txt.bak
hello 111 50人
world 222 100人
ni 333 1000人
hao 444 150人
# 显示不同的行和重复的行
[root@localhost ~]# join -a1 1.txt 1.txt.bak
hello 111 50人
world 222 100人
ni 333 1000人
hao 444
[root@localhost ~]# join -a2 1.txt 1.txt.bak
hello 111 50人
world 222 100人
ni 333 1000人
grep命令
grep命令:用于在文本中执行关键词搜索,并显示匹配的结果
格式:“grep [选项] [文件]”。
参数 | 作用 |
---|---|
-b | 将可执行文件(binary)当作文本文件(text)来搜索 |
-c | 仅显示找到的行数 |
-i | 忽略大小写 |
-n | 显示行号 |
-v | 反向选择—仅列出没有“关键词”的行 |
例子:
# 显示存在null的行号
[root@localhost ~]# grep -n null /etc/passwd
17:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin