文本常见处理工具
文件内容查看命令
cat
格式:
cat [OPTION]... [FILE]...
常见选项:
-E:显示行结束符
-A:显示所有控制符
-n:对显示出的每一行进行编号
-b:对非空行进行编号
-s:压缩连续的空行成一行
范例:
[root@localhost ~]# cat -A -n myasm.s
1 .section .text$
2 .global _start$
3 $
4 _start:$
5 ^Imov r0,#1$
6 ^Iadr r1,mystring$
7 ^Imov r2,#6$
8 ^Imov r7,#4$
9 ^Isvc #0$
10 _exit:$
11 ^Imov r7,#0$
12 ^Isvc #0$
13 mystring:$
14 ^I.string "hello\nworld"$
查看文本文件内容
tac:逆向显示文本内容
nl:显示行号相当于cat -b
rev:将同一行的内容逆向显示
示例:
[root@localhost ~]# echo {a..z} | tr " " "\n" | nl
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 j
11 k
12 l
13 m
14 n
15 o
16 p
17 q
18 r
19 s
20 t
21 u
22 v
23 w
24 x
25 y
26 z[root@localhost ~]# echo love | rev
evol
[root@localhost ~]# echo {a..z} | tr " " "\n" | tac
z
y
x
w
v
u
t
s
r
查看非文本内容
hexdump
示例:
[root@localhost ~]# hexdump -C -n 512 passwd
00000000 72 6f 6f 74 3a 78 3a 30 3a 30 3a 72 6f 6f 74 3a |root:x:0:0:root:|
00000010 2f 72 6f 6f 74 3a 2f 62 69 6e 2f 62 61 73 68 0a |/root:/bin/bash.|
00000020 62 69 6e 3a 78 3a 31 3a 31 3a 62 69 6e 3a 2f 62 |bin:x:1:1:bin:/b|
00000030 69 6e 3a 2f 73 62 69 6e 2f 6e 6f 6c 6f 67 69 6e |in:/sbin/nologin|
00000040 0a 64 61 65 6d 6f 6e 3a 78 3a 32 3a 32 3a 64 61 |.daemon:x:2:2:da|
00000050 65 6d 6f 6e 3a 2f 73 62 69 6e 3a 2f 73 62 69 6e |emon:/sbin:/sbin|
00000060 2f 6e 6f 6c 6f 67 69 6e 0a 61 64 6d 3a 78 3a 33 |/nologin.adm:x:3|
00000070 3a 34 3a 61 64 6d 3a 2f 76 61 72 2f 61 64 6d 3a |:4:adm:/var/adm:|
00000080 2f 73 62 69 6e 2f 6e 6f 6c 6f 67 69 6e 0a 6c 70 |/sbin/nologin.lp|
00000090 3a 78 3a 34 3a 37 3a 6c 70 3a 2f 76 61 72 2f 73 |:x:4:7:lp:/var/s|
od即dump files in octal and other formats
示例:
[root@localhost ~]# echo {a..z} | tr -d " " | od -t x
0000000 64636261 68676665 6c6b6a69 706f6e6d
0000020 74737271 78777675 000a7a79
0000033
[root@localhost ~]# echo {a..z} | tr -d " " | od -t x1
0000000 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70
0000020 71 72 73 74 75 76 77 78 79 7a 0a
0000033
[root@localhost ~]# echo {a..z} | tr -d " " | od -t x1z
0000000 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 >abcdefghijklmnop<
0000020 71 72 73 74 75 76 77 78 79 7a 0a >qrstuvwxyz.<
0000033
xxd
[root@localhost ~]# echo {a..z} | tr -d " " | xxd
0000000: 6162 6364 6566 6768 696a 6b6c 6d6e 6f70 abcdefghijklmnop
0000010: 7172 7374 7576 7778 797a 0a qrstuvwxyz.
more可以实现分页查看文件内容
格式:
more [OPTIONS...] FILE...
more
命令是Linux系统中常用的分页显示工具,它可以将文本文件的内容分页显示,方便用户查看大型文件的内容。以下是关于more
命令的详细解析:基本用法
- 基本语法:
more [选项] [文件名]
。在终端中输入此命令并回车,即可分页显示指定文件的内容。- 示例:
more file.txt
。这将分页显示file.txt
文件的内容。翻页操作
- 向下翻页:
- 空格键(Space):向下翻一页。
- Enter键:向下翻一行。
- Ctrl+F:向下翻一屏。
- 向上翻页:
- b键:向上翻一页。
- Ctrl+B:向上翻一屏。
搜索与跳转
- 搜索:
- 按下
/
键后,输入要搜索的关键字,然后按下Enter键即可进行搜索。- 按下
n
键可以继续搜索下一个匹配项。- 按下
N
键(在某些版本的more
中可能不支持)可以查找上一个匹配项(注意:不是所有版本的more
都支持此功能,可能需要使用less
命令)。- 跳转:
=
键:显示当前页的行号,并允许用户输入行号进行跳转。- 在某些版本的
more
中,可能还支持通过数字键直接跳转到指定行(但这不是所有版本的标准功能)。退出
- 按下
q
键可以退出more
命令。命令选项
more
命令支持多个选项来定制其行为,以下是一些常用的选项:
-n
:设置每页显示的行数。例如,more -5 file.txt
将每页显示5行内容。-p
:在某些版本中,-p
选项可能与搜索或显示模式有关,但具体行为可能因more
版本而异。在一些版本中,-p
可能用于显示或不显示某些特殊字符。-d
:显示“--More--”提示符,并等待用户按任意键进行翻页。这有助于用户知道已经到达了一页的末尾。-c
:在显示新一页之前清除屏幕。-s
:将连续的多个空行压缩成一个空行显示。注意事项
more
命令是逐页显示文件内容的,适合查看大型文件。- 如果需要更强大的文本查看功能,如实时搜索、高亮显示等,可以考虑使用
less
命令。- 在使用
more
命令时,可以通过查看其手册页(使用man more
命令)来获取更详细的选项和用法信息。
less命令
less
命令是 Linux 和 Unix 系统中另一个非常有用的文本查看工具,它提供了比more
命令更丰富的功能和更灵活的操作方式。less
命令允许用户向前或向后浏览文件内容,支持搜索、高亮显示、跳转到指定行等功能。基本用法
- 基本语法:
less [选项] [文件名]
。在终端中输入此命令并回车,即可使用less
查看指定文件的内容。- 示例:
less file.txt
。这将使用less
分页显示file.txt
文件的内容。翻页操作
- 向下翻页:
- 空格键(Space):向下翻一页。
- Enter键:向下翻一行。
f
键:向下翻一屏。- 向上翻页:
b
键:向上翻一页。B
键(大写):向上翻一屏(注意:在某些版本的less
中可能需要按Shift + B
)。- 方向键(上箭头):向上移动一行。
搜索与跳转
- 搜索:
- 按下
/
键后,输入要搜索的关键字,然后按下 Enter 键即可进行搜索。- 按下
n
键可以继续搜索下一个匹配项。- 按下
N
键可以查找上一个匹配项。- 跳转:
G
键:跳转到文件的末尾。g
键:跳转到文件的开头。- 输入行号后按
G
(例如100G
),可以跳转到文件的第 100 行。-N
:跳转到文件的第 N 行(注意:这是less
的一个选项,而不是在less
交互模式下使用的命令。要在命令行中直接跳转到特定行,请使用less +N filename
)。其他功能
- 高亮显示:
less
默认可能不会高亮显示搜索到的文本,但你可以通过配置环境变量(如LESS_TERMCAP_mb
和LESS_TERMCAP_md
)或使用less
的-R
(或--RAW-CONTROL-CHARS
)选项来尝试启用颜色和高亮显示(这取决于你的终端和less
的版本)。- 退出:
- 按下
q
键可以退出less
命令。- 按下
ZZ
(大写)也可以退出less
(在某些版本的less
中可能支持)。
head命令
head
命令是 Linux 和 Unix 系统中用于查看文件开头的部分内容的一个非常实用的命令。它默认显示文件的前10行,但你可以通过选项来指定显示的行数。基本用法
- 基本语法:
head [选项] [文件名]
。- 示例:
head file.txt
。这将显示file.txt
文件的前10行内容。指定行数
- 使用
-n
选项后跟数字来指定要显示的行数。例如,head -n 5 file.txt
将显示file.txt
文件的前5行内容。常用选项
-n [数字]
:指定显示的行数。-c [字节数]
:显示文件的前N个字节的内容,而不是行。-q
:不显示文件名或标题(在多个文件作为输入时有用)。-v
:总是显示文件名或标题(即使只有一个文件作为输入)。
tail命令 --跟踪文件
tail
命令是 Linux 和 Unix 系统中用于查看文件末尾内容的一个非常有用的命令。它默认显示文件的最后10行,但你可以通过选项来指定显示的行数或持续监视文件的新增内容。基本用法
- 基本语法:
tail [选项] [文件名]
。- 示例:
tail file.txt
。这将显示file.txt
文件的最后10行内容。指定行数
- 使用
-n
选项后跟数字来指定要显示的行数。例如,tail -n 5 file.txt
将显示file.txt
文件的最后5行内容。实时监视文件
- 使用
-f
选项可以实时监视文件的新增内容。这对于查看日志文件等动态更新的文件非常有用。例如,tail -f log.txt
将持续显示log.txt
文件的新增内容。合并多个文件
- 使用
-q
或--quiet
、--silent
选项可以在合并多个文件时不显示文件名。默认情况下,如果指定了多个文件,tail
会在每个文件的输出前显示文件名。- 使用
-
(连字符)作为文件名之一,可以表示从标准输入(stdin)读取数据。常用选项
-n [数字]
:指定显示的行数。-f
:实时监视文件的新增内容。-q
、--quiet
、--silent
:在合并多个文件时不显示文件名。-v
、--verbose
:总是显示文件名(即使只有一个文件作为输入)。-c [字节数]
:显示文件末尾的N个字节的内容,而不是行。示例
- 显示文件的最后5行:
tail -n 5 file.txt
。- 实时监视日志文件的新增内容:
tail -f log.txt
。- 合并多个文件并显示最后10行(默认):
tail file1.txt file2.txt
。- 合并多个文件并实时监视新增内容:
tail -f file1.txt file2.txt
(注意:并非所有版本的tail
都支持同时监视多个文件的实时更新)。注意事项
tail
命令对于查看日志文件的最新内容或跟踪文件的动态更新非常有用。- 当使用
-f
选项时,tail
命令会持续运行,直到你手动停止它(通常是通过按 Ctrl+C)。- 在某些情况下,你可能想要将
tail
命令的输出重定向到另一个文件或命令中,但请注意,使用-f
选项时,重定向可能不会按你期望的方式工作,因为tail
会保持对原始文件的打开状态,并直接输出到终端(或你指定的其他输出目标,如果它支持实时更新的话)。然而,你可以使用管道(|
)将tail
的输出传递给其他命令,但请注意,这可能会因为管道缓冲而导致输出延迟。
desmg显示和控制内核的环形缓冲区
dmesg
命令是Linux系统中一个非常有用的命令,它主要用于显示和控制内核的环形缓冲区(ring buffer)。内核在启动过程中会将信息存储在这个缓冲区中,包括内核引导、硬件自检、设备驱动程序初始化等过程中生成的消息。使用dmesg
命令,用户可以查看这些消息,从而了解系统启动时的状态、硬件设备的识别情况、内核模块的加载情况以及重要的系统事件和错误信息。基本用法
在终端中输入
dmesg
即可显示默认的内核日志输出。如果想要以root用户运行该命令来查看完整的内核日志,可以使用sudo dmesg
。常用选项
-C
,--clear
:清除环形缓冲区。-c
,--read-clear
:读取并清除所有消息。-D
,--console-off
:禁止向终端打印消息。-d
,--show-delta
:显示打印消息之间的时间差。-e
,--reltime
:以易读格式显示本地时间和时间差。-k
,--kernel
:只显示内核产生的消息。-f
,--file
:显示指定文件中的内核日志。-l
,--level
:仅显示指定日志级别的消息,如err
、warning
等。-n
,--console-level
:设置在终端上显示的最低日志级别。-p
,--print-priority
:在输出中显示消息的日志优先级。-s SIZE
:设置内核消息缓冲区的大小为SIZE。-T
,--ctime
:打印人类可读的时间戳。-V
,--version
:显示版本信息并退出。-h
,--help
:显示帮助文本并退出。
cut命令按列抽取文本
格式:
cut [OPTION]... [FILE]...
选项:
-d DELMITER:指明分隔符,默认为tap
-f FILEDS:
#:第#个字段
#,#,[#]:离散的多个字段
#-#:#到#的字段
-c :按字符切割
--output-delimiter=STRING指定输出分隔符
示例:
[root@localhost ~]# cat passwd | cut -d: -f1,2,3 --output-delimiter=#
root#x#0
bin#x#1
daemon#x#2
adm#x#3
lp#x#4
sync#x#5
shutdown#x#6[root@localhost ~]# df | cut -c 44-46
Use
0
1
3
0
20
52
1
0
[root@localhost ~]# df | tr -s " " | cut -d" " -f3
Used
0
4
14720
0
4349104
155540
12
0[root@localhost ~]# ifconfig | head -2 | tail -1 | tr -s ' '| cut -d' ' -f3
192.168.11.3
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.11.3 netmask 255.255.255.0 broadcast 192.168.11.255
inet6 fe80::be11:87f0:6acd:c9ea prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:49:88:69 txqueuelen 1000 (Ethernet)
RX packets 2421 bytes 207696 (202.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1462 bytes 387313 (378.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions
合并多个文件--paste
paste
是一个在Unix/Linux系统中广泛使用的命令行工具,它主要用于将多个文件的内容按行合并,或者将来自标准输入的数据与文件内容合并。以下是关于paste
命令的详细解释:基本功能
paste
命令的主要功能是将一个或多个文本文件的内容按行合并,每个文件的相应行被并排放置在同一输出行中。如果文件行数不同,那么较短的文件将会在其末尾填充空行以匹配最长文件的行数。默认情况下,合并的行之间使用制表符(\t
)作为分隔符,但可以通过-d
选项指定其他分隔符。常用选项
-d DELIM
:指定分隔符,用于分隔合并的行。DELIM
可以是任意单个字符或字符串。如果不指定此选项,则默认使用制表符作为分隔符。-s
:将所有输入行的内容合并为一行。每个文件的内容之间使用默认的分隔符(或指定的分隔符)分隔。-
:如果文件名参数是-
,则paste
命令会从标准输入中读取数据。
格式:
paste [OPTION]... [FILE]...
示例:
[root@localhost ~]# echo {a..z} | tr ' ' "\n" > f1.txt
[root@localhost ~]# echo {1..26}| tr ' ' "\n" > f2.txt
[root@localhost ~]# paste f1.txt f2.txt
a 1
b 2
c 3
d 4
e 5
f 6
g 7
h 8
i 9
j 10
k 11
l 12
m 13
n 14
o 15
p 16
q 17
r 18
s 19
t 20
u 21
v 22
w 23
x 24
y 25
z 26root@localhost ~]# paste -s f1.txt
a b c d e f g h i j k l m n o p q r s[root@localhost ~]# paste -s -d'|' f1.txt
a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z
文本分析工具
文本数据统计:wc
整理文本:sort
比较文件:diff和patch
收集文本统计数据--wc
wc命令可用于统计文件总行数,单词总数,字节总数和字符总数
可以对文件或STDIN中的数据统计
常用选项:
-l 只统计行数
-w 只统计单词总数
-c 只统计字节总数
-m 只统计字符总数
-L 显示文件中最长的长度
示例:
[root@localhost ~]# wc -l -w -c -m -L passwd
47 94 2425 2425 99 passwd
[root@localhost ~]# cat passwd
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 ~]# wc -l -w -c -m -L passwd
47 94 2425 2425 99 passwd
[root@localhost ~]# wc passwd
47 94 2425 passwd
文本排序sort
把整理过的文件显示在STDOUT,不改变原始文件
格式:
sort [OPTION] file(s)
常用选项:
-r 执行反方向由上至下整理(倒序)
-R 随机排序
-n 执行按数字大小整理
-f 选项忽略(fold)字符串字符中的大小写
-u 选项(独特,unique),删除输出中的重复行
-t c 选项使用c字段作为定界符
-k # 选项按照使用c字符分隔的#列来整理能够使用多次
示例:
[root@localhost ~]# seq 1 10 | sort -n -r
10
9
8
7
6
5
4
3
2
1
[root@localhost ~]# sort -t: -k3 -n passwd
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt[root@localhost ~]# df | tr -s ' ' | sort -nr -t' ' -k5 | cut -d' ' -f3| head -1
155540
去重uniq
格式:
unique [OPTION].. FILE
常用选项:
- -c, --count:在每行前加上表示该行出现次数的前缀编号。
- -d, --repeated:只输出重复的行,每个重复记录只出现一次。
- -D, --all-repeated:只输出重复的行,不过有几行输出几行。
- -f, --skip-fields=N:忽略比较指定的字段数。例如,
-f 1
会忽略每行的第一列。- -i, --ignore-case:不区分大小写进行比较。
- -s, --skip-chars=N:忽略每行开头的 N 个字符。
- -u, --unique:只显示没有重复的行。
- -z, --zero-terminated:在末尾使用
\0
(null 字符)作为行结束符,而不是换行符。
标签:10,文件,--,Linux,3a,txt,root,localhost From: https://blog.csdn.net/alwtj/article/details/142049819