Linux基础入门 --10 DAY

文本常见处理工具

文件内容查看命令

        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:仅显示指定日志级别的消息,如errwarning等。
  • -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  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
        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    26

root@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

        常用选项:

  1. -c, --count:在每行前加上表示该行出现次数的前缀编号。
  2. -d, --repeated:只输出重复的行,每个重复记录只出现一次。
  3. -D, --all-repeated:只输出重复的行,不过有几行输出几行。
  4. -f, --skip-fields=N:忽略比较指定的字段数。例如,-f 1 会忽略每行的第一列。
  5. -i, --ignore-case:不区分大小写进行比较。
  6. -s, --skip-chars=N:忽略每行开头的 N 个字符。
  7. -u, --unique:只显示没有重复的行。
  8. -z, --zero-terminated:在末尾使用 \0(null 字符)作为行结束符,而不是换行符。

       

         

        

        

        

你可能感兴趣的:(Linux学习,linux,运维,服务器)