Linux文本处理工具和正则表达式
一.查看、截取和修改文本的工具
1.查看文本的工具
cat
- 最常用的文件查看命令;当不指明文件或者文件名为一杠’-'时,读取标准输入。
cat [OPTION]... [FILE]...
-A:显示所有控制符(tab键:^I;行结束符:$)
-E:显示行结束符$
-n:对显示出的每一行进行编号
-b:只对非空行进行编号
-s:压缩连续的空行成一行
more
- 默认将多行文本满屏输出,只允许向文本末尾翻页(空格键满屏翻页;回车键单行翻页),阅读到文末自动退出。
- 用法
more [options] file...
- 一般使用管道传给more来阅读内容超过满屏的文本
cat big_file1 | more
less
- 功能和more类似,但是允许向前和向后翻页,阅读到文本末尾不会自动退出。
- 另外,less不必读取完整的文本,这使得其打开较大的文本文件时比vi等工具更具有速度优势。
- 翻页快捷键
空格键向下满屏翻页 | |
回车键单行向下翻页 | |
k键单行向上 | |
u键半屏向上 | |
f键半屏向下 |
- 向下的快捷键同样适用于more
nl
- nl将文本文件传给标准输出,并添给每行文本加行号;当不指明文件或者文件名为一杠’-'时,读取标准输入。
- 用法
nl [OPTION]... [FILE]...
-i# # 表示行号间隔#个数递增
- 下面的用法只给带root的行加行号(匹配基本正则表达式)
nl -b, --body-numbering=pBRE file # BRE 表示基本正则表达式
nl --body-numbering=proot /etc/passwd
tac
- cat 的反用,最后一行先显示;当不指明文件或者文件名为一杠’-'时,读取标准输入。
rev
- rev读取指定的文件,倒序每行的字符,输出到标准输出;如果不指定文件,读取标准输入。
[root@centos8 ~]$ rev
hello # 输入
olleh # 输出
howdy # 输入
ydwoh # 输出
2.查看非文本文件的工具
hexdump
-
hexdump 将文件内容以ascii字符, decimal十进制, hexadecimal十六进制, 或者octal八进制显示在标准输出。
-
用法
hexdump [options] file [...]
-C # 大写C字母表示按照标准的16进制ASCII码显示文件内容
-n length # 只显示前n字节的内容
-s offset # 跳过文件内容的前offset个字节显示
注:length和offset的格式为:1KiB=1024字节;1MiB=1024KiB;... 或者:1KB=1000字节;1MB=1000KB...
也就是说下面的写法等价:
[root@centos8 /data]$ hexdump -C -n 1KiB /dev/nvme0n1 | wc -l
56 ^^^^
[root@centos8 /data]$ hexdump -C -n 1024 /dev/nvme0n1 | wc -l
56 ^^^^
##################################
[root@centos8 /data]$ hexdump -C -n 1KiB /dev/nvme0n1 | tail -n3
000003f0 00 00 00 00 02 00 00 00 00 00 00 00 77 00 20 08 |............w. .|
00000400
[root@centos8 /data]$ hexdump -C -n 1024 /dev/nvme0n1 | tail -n3
000003f0 00 00 00 00 02 00 00 00 00 00 00 00 77 00 20 08 |............w. .|
00000400
##################################
[root@centos8 /data]$hexdump -C -n 1KB /dev/nvme0n1 | tail -n3
* ^^^
000003e0 00 00 00 00 00 00 00 00 |........|
000003e8
[root@centos8 /data]$hexdump -C -n 1000 /dev/nvme0n1 | tail -n3
* ^^^^
000003e0 00 00 00 00 00 00 00 00 |........|
000003e8
[root@centos8 /data]$ hexdump -C -n 512 /dev/nvme0n1 # 查看MBR
00000000 eb 63 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |.c..............|
00000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 |...|.........!..|
00000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 |....8.u........u|
00000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 01 8b |.........|...t..|
00000040 4c 02 cd 13 ea 00 7c 00 00 eb fe 00 00 00 00 00 |L.....|.........|
00000050 00 00 00 00 00 00 00 00 00 00 00 80 01 00 00 00 |................|
00000060 00 00 00 00 ff fa 90 90 f6 c2 80 74 05 f6 c2 70 |...........t...p|
00000070 74 02 b2 80 ea 79 7c 00 00 31 c0 8e d8 8e d0 bc |t....y|..1......|
00000080 00 20 fb a0 64 7c 3c ff 74 02 88 c2 52 be 05 7c |. ..d|<.t...R..||
00000090 b4 41 bb aa 55 cd 13 5a 52 72 3d 81 fb 55 aa 75 |.A..U..ZRr=..U.u|
000000a0 37 83 e1 01 74 32 31 c0 89 44 04 40 88 44 ff 89 |7...t21..D.@.D..|
000000b0 44 02 c7 04 10 00 66 8b 1e 5c 7c 66 89 5c 08 66 |D.....f..\|f.\.f|
000000c0 8b 1e 60 7c 66 89 5c 0c c7 44 06 00 70 b4 42 cd |..\`|f.\..D..p.B.|
000000d0 13 72 05 bb 00 70 eb 76 b4 08 cd 13 73 0d 5a 84 |.r...p.v....s.Z.|
000000e0 d2 0f 83 de 00 be 85 7d e9 82 00 66 0f b6 c6 88 |.......}...f....|
000000f0 64 ff 40 66 89 44 04 0f b6 d1 c1 e2 02 88 e8 88 |d.@f.D..........|
00000100 f4 40 89 44 08 0f b6 c2 c0 e8 02 66 89 04 66 a1 |.@.D.......f..f.|
00000110 60 7c 66 09 c0 75 4e 66 a1 5c 7c 66 31 d2 66 f7 |\`|f..uNf.\|f1.f.|
00000120 34 88 d1 31 d2 66 f7 74 04 3b 44 08 7d 37 fe c1 |4..1.f.t.;D.}7..|
00000130 88 c5 30 c0 c1 e8 02 08 c1 88 d0 5a 88 c6 bb 00 |..0........Z....|
00000140 70 8e c3 31 db b8 01 02 cd 13 72 1e 8c c3 60 1e |p..1....