精华内容
下载资源
问答
  • 过滤器是一个程序,它从标准输入...下面是 Linux 上的一些有用的文件或者文本过滤器。1、 awk 命令awk是一个卓越的模式扫描和处理语言,它可被用于在 Linux 下构造有用的过滤器。你可以通过阅读我们的 awk 系列 1 ...

    过滤器是一个程序,它从标准输入读取数据,在数据上执行操作,然后把结果写到标准输出。

    因此,它可以用来以强大的方式处理信息,例如重新结构化输出以生成有用的报告,修改文件里面的文本,以及其他很多系统管理任务。

    07eb59febe83724b4447add71c91655c.png

    下面是 Linux 上的一些有用的文件或者文本过滤器。

    1、 awk 命令

    awk 是一个卓越的模式扫描和处理语言,它可被用于在 Linux 下构造有用的过滤器。你可以通过阅读我们的 awk 系列 1 到 13 部分 来开始使用它。

    另外,也可以通过阅读 awk 的 man 手册来获取更多的信息和使用选项。

    $ man awk

    2、 sed 命令

    sed 是一款过滤和转换文本的强大的流编辑器。我们已经写了两篇关于 sed 的有用的文章,你可以通过这儿来了解:

    sed 的 man 手册已经添加控制选项和说明:

    $ man sed

    3、 grep、 egrep、 fgrep、 rgrep 命令行

    这些过滤器输出匹配指定模式的行。它们从一个文件或者标准输入读取行,并且输出所有匹配的行,默认输出到标准输出。

    注意:主程序是 grep,这些变体与使用特定的选项的 grep 相同,如下所示(为了向后兼容性,它们依旧在使用):

    $ egrep = grep -E

    $ fgrep = grep -F

    $ rgrep = grep -r

    下面是一些基本的 grep 命令:

    tecmint@TecMint ~ $ grep "aaronkilik" /etc/passwd

    aaronkilik:x:1001:1001::/home/aaronkilik:

    tecmint@TecMint ~ $ cat /etc/passwd | grep "aronkilik"

    aaronkilik:x:1001:1001::/home/aaronkilik:

    4、 head 命令

    head 用于显示文件前面的部分,默认情况下它输出前 10 行。你可以使用 -n 标志来指定显示的行数:

    tecmint@TecMint ~ $ head /var/log/auth.log

    Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)

    Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root

    Jan 2 10:51:34 TecMint sudo: tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py

    Jan 2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)

    Jan 2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root

    Jan 2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0)

    Jan 2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root

    Jan 2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0)

    Jan 2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root

    Jan 2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0)

    tecmint@TecMint ~ $ head -n 5 /var/log/auth.log

    Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)

    Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root

    Jan 2 10:51:34 TecMint sudo: tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py

    Jan 2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)

    Jan 2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root

    5、 tail 命令

    tail 输出一个文件的后面的部分(默认 10 行)。使用 -n 选项来指定显示的行数。

    下面的命令将会输出指定文件的最后 5 行:

    tecmint@TecMint ~ $ tail -n 5 /var/log/auth.log

    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.

    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

    Jan 6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.

    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.

    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

    另外,tail 有一个特殊的选项 -f ,可以 实时查看一个文件的变化 (尤其是日志文件)。

    下面的命令将会使你能够监控指定文件的变化:

    tecmint@TecMint ~ $ tail -f /var/log/auth.log

    Jan 6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22.

    Jan 6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting.

    Jan 6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.

    Jan 6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22.

    Jan 6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.

    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.

    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

    Jan 6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.

    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.

    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

    阅读 tail 的 man 手册,获取使用选项和说明的完整内容:

    $ man tail

    6、 sort 命令

    sort 用于将文本文件或标准输入的行进行排序。

    下面是一个名为 domain.list 的文件的内容:

    tecmint@TecMint ~ $ cat domains.list

    tecmint.com

    tecmint.com

    news.tecmint.com

    news.tecmint.com

    linuxsay.com

    linuxsay.com

    windowsmint.com

    windowsmint.com

    你可以像这样运行一个简单的 sort 命令 来排序文件内容:

    tecmint@TecMint ~ $ sort domains.list

    linuxsay.com

    linuxsay.com

    news.tecmint.com

    news.tecmint.com

    tecmint.com

    tecmint.com

    windowsmint.com

    windowsmint.com

    你可以有多种方式来使用 sort 命令,请参阅以下一些关于 sort 命令的有用的文章。

    7、 uniq 命令

    uniq 命令用于报告或者忽略重复行,它从标准输入过滤行,并且把结果写到标准输出。

    在对一个输入流运行 sort 之后,你可以使用 uniq 删除重复行,如下例所示。

    为了显示行出现的数目,使用 -c 选项,要在对比时忽略大小写的差异,使用 -i 选项:

    tecmint@TecMint ~ $ cat domains.list

    tecmint.com

    tecmint.com

    news.tecmint.com

    news.tecmint.com

    linuxsay.com

    linuxsay.com

    windowsmint.com

    tecmint@TecMint ~ $ sort domains.list | uniq -c

    2 linuxsay.com

    2 news.tecmint.com

    2 tecmint.com

    1 windowsmint.com

    通过阅读 uniq 的 man 手册来获取进一步的使用信息和选项:

    $ man uniq

    8、 fmt 命令行

    fmt 是一款简单的优化的文本格式化器,它重新格式化指定文件的段落,并且打印结果到标准输出。

    以下是从文件 domain-list.txt 提取的内容:

    1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com

    为了把上面的内容重新格式化成一个标准的清单,运行下面的命令,使用 -w 选项定义最大行宽度:

    tecmint@TecMint ~ $ cat domain-list.txt

    1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com

    tecmint@TecMint ~ $ fmt -w 1 domain-list.txt

    1.tecmint.com

    2.news.tecmint.com

    3.linuxsay.com

    4.windowsmint.com

    9、 pr 命令

    pr 命令转换文本文件或者标准输入之后打印出来。例如在 Debian 系统上,你可以像下面这样显示所有的安装包:

    $ dpkg -l

    为了将要打印的列表在页面和列中组织好,使用以下命令。

    tecmint@TecMint ~ $ dpkg -l | pr --columns 3 -l 20

    2017-01-06 13:19 Page 1

    Desired=Unknown/Install ii adduser ii apg

    | Status=Not/Inst/Conf- ii adwaita-icon-theme ii app-install-data

    |/ Err?=(none)/Reinst-r ii adwaita-icon-theme- ii apparmor

    ||/ Name ii alsa-base ii apt

    +++-=================== ii alsa-utils ii apt-clone

    ii accountsservice ii anacron ii apt-transport-https

    ii acl ii apache2 ii apt-utils

    ii acpi-support ii apache2-bin ii apt-xapian-index

    ii acpid ii apache2-data ii aptdaemon

    ii add-apt-key ii apache2-utils ii aptdaemon-data

    2017-01-06 13:19 Page 2

    ii aptitude ii avahi-daemon ii bind9-host

    ii aptitude-common ii avahi-utils ii binfmt-support

    ii apturl ii aview ii binutils

    ii apturl-common ii banshee ii bison

    ii archdetect-deb ii baobab ii blt

    ii aspell ii base-files ii blueberry

    ii aspell-en ii base-passwd ii bluetooth

    ii at-spi2-core ii bash ii bluez

    ii attr ii bash-completion ii bluez-cups

    ii avahi-autoipd ii bc ii bluez-obexd

    .....

    其中,使用的标志如下:

    --column 定义在输出中创建的列数。

    -l 指定页面的长度(默认是 66 行)。

    10、 tr 命令行

    这个命令从标准输入转换或者删除字符,然后输出结果到标准输出。

    使用 tr 的语法如下:

    $ tr options set1 set2

    看一下下面的例子,在第一个命令,set1( [:upper:] ) 代表指定输入字符的大小写(都是大写字符)。 set2([:lower:]) 代表期望结果字符的大小写。第二个例子意思相似,转义字符 /n 表示在新的一行打印输出:

    tecmint@TecMint ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:]

    www.tecmint.com

    tecmint@TecMint ~ $ echo "news.tecmint.com" | tr [:lower:] [:upper:]

    NEWS.TECMINT.COM

    11、 more 命令

    more 命令是一个有用的文件过滤器,最初为查看证书而建。它一页页显示文件内容,用户可以通过按回车来显示更多的信息。

    你可以像这样使用它来显示大文件:

    tecmint@TecMint ~ $ dmesg | more

    [ 0.000000] Initializing cgroup subsys cpuset

    [ 0.000000] Initializing cgroup subsys cpu

    [ 0.000000] Initializing cgroup subsys cpuacct

    [ 0.000000] Linux version 4.4.0-21-generic (buildd@lgw01-21) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic

    4.4.6)

    [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7

    [ 0.000000] KERNEL supported cpus:

    [ 0.000000] Intel GenuineIntel

    [ 0.000000] AMD AuthenticAMD

    [ 0.000000] Centaur CentaurHauls

    [ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256

    [ 0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'

    [ 0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'

    [ 0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'

    [ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.

    [ 0.000000] x86/fpu: Using 'eager' FPU context switches.

    [ 0.000000] e820: BIOS-provided physical RAM map:

    [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable

    [ 0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved

    [ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved

    [ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable

    [ 0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved

    [ 0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable

    --More--

    12、 less 命令

    less 是和上面的 more 命令相反的一个命令,但是它提供了额外的特性,而且对于大文件,它会更快些。

    按照 more 命令相同的方式使用它:

    tecmint@TecMint ~ $ dmesg | less

    [ 0.000000] Initializing cgroup subsys cpuset

    [ 0.000000] Initializing cgroup subsys cpu

    [ 0.000000] Initializing cgroup subsys cpuacct

    [ 0.000000] Linux version 4.4.0-21-generic (buildd@lgw01-21) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic

    4.4.6)

    [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7

    [ 0.000000] KERNEL supported cpus:

    [ 0.000000] Intel GenuineIntel

    [ 0.000000] AMD AuthenticAMD

    [ 0.000000] Centaur CentaurHauls

    [ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256

    [ 0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'

    [ 0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'

    [ 0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'

    [ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.

    [ 0.000000] x86/fpu: Using 'eager' FPU context switches.

    [ 0.000000] e820: BIOS-provided physical RAM map:

    [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable

    [ 0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved

    [ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved

    [ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable

    [ 0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved

    [ 0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable

    :

    学习为什么 Linux 下进行有效的文件浏览, ‘less’ 比 ‘more’ 命令更快。

    基本上就这些了,如果你还知道其他本文没有提供的 Linux 下有用的文本过滤命令行工具,可以在下面的评论部分通知我们。

    本文由 LCTT 原创编译,Linux中国 荣誉推出

    展开全文
  • 过滤器是一个程序,它从标准输入...下面是 Linux 上的一些有用的文件或者文本过滤器。1、 awk 命令awk 是一个卓越的模式扫描和处理语言,它可被用于在 Linux 下构造有用的过滤器。你可以通过阅读我们的 awk 系列 1 ...

    过滤器是一个程序,它从标准输入读取数据,在数据上执行操作,然后把结果写到标准输出。

    因此,它可以用来以强大的方式处理信息,例如重新结构化输出以生成有用的报告,修改文件里面的文本,以及其他很多系统管理任务。

    下面是 Linux 上的一些有用的文件或者文本过滤器。

    1、 awk 命令

    awk 是一个卓越的模式扫描和处理语言,它可被用于在 Linux 下构造有用的过滤器。你可以通过阅读我们的 awk 系列 1 到 13 部分 来开始使用它。

    另外,也可以通过阅读 awk 的 man 手册来获取更多的信息和使用选项。

    $ man awk
    
    2、 sed 命令

    sed 是一款过滤和转换文本的强大的流编辑器。我们已经写了两篇关于 sed 的有用的文章,你可以通过这儿来了解:

    sed 的 man 手册已经添加控制选项和说明:

    $ man sed
    
    3、 grep、 egrep、 fgrep、 rgrep 命令行

    这些过滤器输出匹配指定模式的行。它们从一个文件或者标准输入读取行,并且输出所有匹配的行,默认输出到标准输出。

    注意:主程序是 grep,这些变体与使用特定的选项的 grep 相同,如下所示(为了向后兼容性,它们依旧在使用):

    $ egrep = grep -E
    $ fgrep = grep -F
    $ rgrep = grep -r  
    

    下面是一些基本的 grep 命令:

    tecmint@TecMint ~ $ grep "aaronkilik" /etc/passwd
    aaronkilik:x:1001:1001::/home/aaronkilik:
    tecmint@TecMint ~ $ cat /etc/passwd | grep "aronkilik"
    aaronkilik:x:1001:1001::/home/aaronkilik:
    

    Linux 下的 grep、 egrep 和 fgrep 的差异?中,你可以了解更多。

    4、 head 命令

    head 用于显示文件前面的部分,默认情况下它输出前 10 行。你可以使用 -n 标志来指定显示的行数:

    tecmint@TecMint ~ $ head /var/log/auth.log  
    Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
    Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
    Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
    Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
    Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root
    Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root
    Jan  2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0)
    tecmint@TecMint ~ $ head  -n 5 /var/log/auth.log  
    Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
    Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
    Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
    Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
    

    学习如何 使用带有 tail 和 cat 命令的 head 命令,以便在 Linux 下更有效的使用。

    5、 tail 命令

    tail 输出一个文件的后面的部分(默认 10 行)。使用 -n 选项来指定显示的行数。

    下面的命令将会输出指定文件的最后 5 行:

    tecmint@TecMint ~ $ tail -n 5 /var/log/auth.log
    Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
    Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
    Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
    

    另外,tail 有一个特殊的选项 -f ,可以 实时查看一个文件的变化 (尤其是日志文件)。

    下面的命令将会使你能够监控指定文件的变化:

    tecmint@TecMint ~ $ tail -f /var/log/auth.log
    Jan  6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22.
    Jan  6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting.
    Jan  6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    Jan  6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22.
    Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
    Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
    Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
    Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
    

    阅读 tail 的 man 手册,获取使用选项和说明的完整内容:

    $ man tail
    
    6、 sort 命令

    sort 用于将文本文件或标准输入的行进行排序。

    下面是一个名为 domain.list 的文件的内容:

    tecmint@TecMint ~ $ cat domains.list
    tecmint.com
    tecmint.com
    news.tecmint.com
    news.tecmint.com
    linuxsay.com
    linuxsay.com
    windowsmint.com
    windowsmint.com
    

    你可以像这样运行一个简单的 sort 命令 来排序文件内容:

    tecmint@TecMint ~ $ sort domains.list
    linuxsay.com
    linuxsay.com
    news.tecmint.com
    news.tecmint.com
    tecmint.com
    tecmint.com
    windowsmint.com
    windowsmint.com
    

    你可以有多种方式来使用 sort 命令,请参阅以下一些关于 sort 命令的有用的文章。

    7、 uniq 命令

    uniq 命令用于报告或者忽略重复行,它从标准输入过滤行,并且把结果写到标准输出。

    在对一个输入流运行 sort 之后,你可以使用 uniq 删除重复行,如下例所示。

    为了显示行出现的数目,使用 -c 选项,要在对比时忽略大小写的差异,使用 -i 选项:

    tecmint@TecMint ~ $ cat domains.list
    tecmint.com
    tecmint.com
    news.tecmint.com
    news.tecmint.com
    linuxsay.com
    linuxsay.com
    windowsmint.com
    tecmint@TecMint ~ $ sort domains.list | uniq -c 
    2 linuxsay.com
    2 news.tecmint.com
    2 tecmint.com
    1 windowsmint.com 
    

    通过阅读 uniq 的 man 手册来获取进一步的使用信息和选项:

    $ man uniq
    
    8、 fmt 命令行

    fmt 是一款简单的优化的文本格式化器,它重新格式化指定文件的段落,并且打印结果到标准输出。

    以下是从文件 domain-list.txt 提取的内容:

    1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com
    

    为了把上面的内容重新格式化成一个标准的清单,运行下面的命令,使用 -w 选项定义最大行宽度:

    tecmint@TecMint ~ $ cat domain-list.txt 
    1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com
    tecmint@TecMint ~ $ fmt -w 1 domain-list.txt
    1.tecmint.com 
    2.news.tecmint.com 
    3.linuxsay.com 
    4.windowsmint.com
    
    9、 pr 命令

    pr 命令转换文本文件或者标准输入之后打印出来。例如在 Debian 系统上,你可以像下面这样显示所有的安装包:

    $ dpkg -l
    

    为了将要打印的列表在页面和列中组织好,使用以下命令。

    tecmint@TecMint ~ $ dpkg -l | pr --columns 3 -l 20  
    2017-01-06 13:19                                                  Page 1
    Desired=Unknown/Install ii  adduser             ii  apg
    | Status=Not/Inst/Conf- ii  adwaita-icon-theme  ii  app-install-data
    |/ Err?=(none)/Reinst-r ii  adwaita-icon-theme- ii  apparmor
    ||/ Name                ii  alsa-base               ii  apt
    +++-=================== ii  alsa-utils            ii  apt-clone
    ii  accountsservice     ii  anacron               ii  apt-transport-https
    ii  acl                 ii  apache2               ii  apt-utils
    ii  acpi-support        ii  apache2-bin           ii  apt-xapian-index
    ii  acpid               ii  apache2-data          ii  aptdaemon
    ii  add-apt-key         ii  apache2-utils         ii  aptdaemon-data
    2017-01-06 13:19                                                  Page 2
    ii  aptitude            ii  avahi-daemon          ii  bind9-host
    ii  aptitude-common     ii  avahi-utils           ii  binfmt-support
    ii  apturl              ii  aview                   ii  binutils
    ii  apturl-common       ii  banshee               ii  bison
    ii  archdetect-deb      ii  baobab                ii  blt
    ii  aspell              ii  base-files            ii  blueberry
    ii  aspell-en           ii  base-passwd           ii  bluetooth
    ii  at-spi2-core        ii  bash                    ii  bluez
    ii  attr                ii  bash-completion     ii  bluez-cups
    ii  avahi-autoipd       ii  bc                      ii  bluez-obexd
    .....
    

    其中,使用的标志如下:

    • --column 定义在输出中创建的列数。
    • -l 指定页面的长度(默认是 66 行)。
    10、 tr 命令行

    这个命令从标准输入转换或者删除字符,然后输出结果到标准输出。

    使用 tr 的语法如下:

    $ tr options set1 set2
    

    看一下下面的例子,在第一个命令,set1( [:upper:] ) 代表指定输入字符的大小写(都是大写字符)。 set2([:lower:]) 代表期望结果字符的大小写。第二个例子意思相似,转义字符 /n 表示在新的一行打印输出:

    tecmint@TecMint ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:]
    www.tecmint.com
    tecmint@TecMint ~ $ echo "news.tecmint.com" | tr [:lower:] [:upper:]
    NEWS.TECMINT.COM
    
    11、 more 命令

    more 命令是一个有用的文件过滤器,最初为查看证书而建。它一页页显示文件内容,用户可以通过按回车来显示更多的信息。

    你可以像这样使用它来显示大文件:

    tecmint@TecMint ~ $ dmesg | more
    [    0.000000] Initializing cgroup subsys cpuset
    [    0.000000] Initializing cgroup subsys cpu
    [    0.000000] Initializing cgroup subsys cpuacct
    [    0.000000] Linux version 4.4.0-21-generic (buildd@lgw01-21) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
    4.4.6)
    [    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
    [    0.000000] KERNEL supported cpus:
    [    0.000000]   Intel GenuineIntel
    [    0.000000]   AMD AuthenticAMD
    [    0.000000]   Centaur CentaurHauls
    [    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
    [    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
    [    0.000000] x86/fpu: Using 'eager' FPU context switches.
    [    0.000000] e820: BIOS-provided physical RAM map:
    [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
    [    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
    [    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
    [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
    [    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
    [    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
    --More--
    
    12、 less 命令

    less 是和上面的 more 命令相反的一个命令,但是它提供了额外的特性,而且对于大文件,它会更快些。

    按照 more 命令相同的方式使用它:

    tecmint@TecMint ~ $ dmesg | less
    [    0.000000] Initializing cgroup subsys cpuset
    [    0.000000] Initializing cgroup subsys cpu
    [    0.000000] Initializing cgroup subsys cpuacct
    [    0.000000] Linux version 4.4.0-21-generic (buildd@lgw01-21) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
    4.4.6)
    [    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
    [    0.000000] KERNEL supported cpus:
    [    0.000000]   Intel GenuineIntel
    [    0.000000]   AMD AuthenticAMD
    [    0.000000]   Centaur CentaurHauls
    [    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
    [    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
    [    0.000000] x86/fpu: Using 'eager' FPU context switches.
    [    0.000000] e820: BIOS-provided physical RAM map:
    [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
    [    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
    [    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
    [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
    [    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
    [    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
    :
    

    学习为什么 Linux 下进行有效的文件浏览, ‘less’ 比 ‘more’ 命令更快

    基本上就这些了,如果你还知道其他本文没有提供的 Linux 下有用的文本过滤命令行工具,可以在下面的评论部分通知我们。


    via: http://www.tecmint.com/linux-file-operations-commands/

    作者:Aaron Kili 译者:yangmingming 校对:jasminepeng

    本文由 LCTT 原创编译,Linux中国 荣誉推出

    原文来自:http://www.linuxprobe.com/linux-filter-cmd.html

    展开全文
  • 摘要: 在这篇文章中,我们将会看一些 Linux 中的过滤器命令行工具。过滤器是一个程序,它从标准输入读取数据,在数据上执行操作,然后把结果写到标准输出。 因此,它可以用来以强大的方式处理信息,例如重新结构化...

    摘要: 在这篇文章中,我们将会看一些 Linux 中的过滤器命令行工具。过滤器是一个程序,它从标准输入读取数据,在数据上执行操作,然后把结果写到标准输出。 因此,它可以用来以强大的方式处理信息,例如重新结构化输出以生成有用的报告,修改文件里面的文本,以及其他很多系统管理任务。

    在这篇文章中,我们将会看一些 Linux 中的过滤器命令行工具。过滤器是一个程序,它从标准输入读取数据,在数据上执行操作,然后把结果写到标准输出。

    因此,它可以用来以强大的方式处理信息,例如重新结构化输出以生成有用的报告,修改文件里面的文本,以及其他很多系统管理任务。

    下面是 Linux 上的一些有用的文件或者文本过滤器。

    1、 awk 命令

    awk 是一个卓越的模式扫描和处理语言,它可被用于在 Linux 下构造有用的过滤器。你可以通过阅读我们的awk 系列 1 到 13 部分 来开始使用它。

    另外,也可以通过阅读 awk 的 man 手册来获取更多的信息和使用选项。

    
    
    1. man awk

    2、 sed 命令

    sed 是一款过滤和转换文本的强大的流编辑器。我们已经写了两篇关于 sed 的有用的文章,你可以通过这儿来了解:

    sed 的 man 手册已经添加控制选项和说明:

    
    
    1. man sed

    3、 grep、 egrep、 fgrep、 rgrep 命令行

    这些过滤器输出匹配指定模式的行。它们从一个文件或者标准输入读取行,并且输出所有匹配的行,默认输出到标准输出。

    注意:主程序是 grep,这些变体与使用特定的选项的 grep 相同,如下所示(为了向后兼容性,它们依旧在使用):

    
    
    1. $ egrep = grep -E
    2. $ fgrep = grep -F
    3. $ rgrep = grep -r

    下面是一些基本的 grep 命令:

    
    
    1. tecmint@TecMint ~ $ grep "aaronkilik" /etc/passwd
    2. aaronkilik:x:1001:1001::/home/aaronkilik:
    3. tecmint@TecMint ~ $ cat /etc/passwd | grep "aronkilik"
    4. aaronkilik:x:1001:1001::/home/aaronkilik:

    在 Linux 下的 grep、 egrep 和 fgrep 的差异?中,你可以了解更多。

    4、 head 命令

    head 用于显示文件前面的部分,默认情况下它输出前 10 行。你可以使用 -n 标志来指定显示的行数:

    
    
    1. tecmint@TecMint ~ $ head /var/log/auth.log
    2. Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
    3. Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
    4. Jan 2 10:51:34 TecMint sudo: tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
    5. Jan 2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
    6. Jan 2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
    7. Jan 2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0)
    8. Jan 2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root
    9. Jan 2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0)
    10. Jan 2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root
    11. Jan 2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0)
    12. tecmint@TecMint ~ $ head -5 /var/log/auth.log
    13. Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
    14. Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
    15. Jan 2 10:51:34 TecMint sudo: tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
    16. Jan 2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
    17. Jan 2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root

    学习如何 使用带有 tail 和 cat 命令的 head 命令,以便在 Linux 下更有效的使用。

    5、 tail 命令

    tail 输出一个文件的后面的部分(默认 10 行)。使用 -n 选项来指定显示的行数。

    下面的命令将会输出指定文件的最后 5 行:

    
    
    1. tecmint@TecMint ~ $ tail -5 /var/log/auth.log
    2. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    3. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
    4. Jan 6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
    5. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    6. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

    另外,tail 有一个特殊的选项 -f ,可以 实时查看一个文件的变化 (尤其是日志文件)。

    下面的命令将会使你能够监控指定文件的变化:

    
    
    1. tecmint@TecMint ~ $ tail -/var/log/auth.log
    2. Jan 6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22.
    3. Jan 6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting.
    4. Jan 6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    5. Jan 6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22.
    6. Jan 6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
    7. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    8. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
    9. Jan 6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
    10. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    11. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

    阅读 tail 的 man 手册,获取使用选项和说明的完整内容:

    
    
    1. man tail

    6、 sort 命令

    sort 用于将文本文件或标准输入的行进行排序。

    下面是一个名为 domain.list 的文件的内容:

    
    
    1. tecmint@TecMint ~ $ cat domains.list
    2. tecmint.com
    3. tecmint.com
    4. news.tecmint.com
    5. news.tecmint.com
    6. linuxsay.com
    7. linuxsay.com
    8. windowsmint.com
    9. windowsmint.com

    你可以像这样运行一个简单的 sort 命令 来排序文件内容:

    
    
    1. tecmint@TecMint ~ $ sort domains.list
    2. linuxsay.com
    3. linuxsay.com
    4. news.tecmint.com
    5. news.tecmint.com
    6. tecmint.com
    7. tecmint.com
    8. windowsmint.com
    9. windowsmint.com

    你可以有多种方式来使用 sort 命令,请参阅以下一些关于 sort 命令的有用的文章。

    7、 uniq 命令

    uniq 命令用于报告或者忽略重复行,它从标准输入过滤行,并且把结果写到标准输出。

    在对一个输入流运行 sort 之后,你可以使用 uniq 删除重复行,如下例所示。

    为了显示行出现的数目,使用 -c 选项,要在对比时忽略大小写的差异,使用 -i 选项:

    
    
    1. tecmint@TecMint ~ $ cat domains.list
    2. tecmint.com
    3. tecmint.com
    4. news.tecmint.com
    5. news.tecmint.com
    6. linuxsay.com
    7. linuxsay.com
    8. windowsmint.com
    9. tecmint@TecMint ~ $ sort domains.list | uniq -c
    10. 2 linuxsay.com
    11. 2 news.tecmint.com
    12. 2 tecmint.com
    13. 1 windowsmint.com

    通过阅读 uniq 的 man 手册来获取进一步的使用信息和选项:

    
    
    1. man uniq

    8、 fmt 命令行

    fmt 是一款简单的优化的文本格式化器,它重新格式化指定文件的段落,并且打印结果到标准输出。

    以下是从文件 domain-list.txt 提取的内容:

    
    
    1. 1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com

    为了把上面的内容重新格式化成一个标准的清单,运行下面的命令,使用 -w 选项定义最大行宽度:

    
    
    1. tecmint@TecMint ~ $ cat domain-list.txt
    2. 1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com
    3. tecmint@TecMint ~ $ fmt -w 1 domain-list.txt
    4. 1.tecmint.com
    5. 2.news.tecmint.com
    6. 3.linuxsay.com
    7. 4.windowsmint.com

    9、 pr 命令

    pr 命令转换文本文件或者标准输入之后打印出来。例如在 Debian 系统上,你可以像下面这样显示所有的安装包:

    
    
    1. $ dpkg -l

    为了将要打印的列表在页面和列中组织好,使用以下命令。

    
    
    1. tecmint@TecMint ~ $ dpkg -| pr --columns 3 -20
    2. 2017-01-06 13:19 Page 1
    3. Desired=Unknown/Install ii adduser ii apg
    4. | Status=Not/Inst/Conf- ii adwaita-icon-theme ii app-install-data
    5. |/ Err?=(none)/Reinst-r ii adwaita-icon-theme- ii apparmor
    6. ||/ Name ii alsa-base ii apt
    7. +++-=================== ii alsa-utils ii apt-clone
    8. ii accountsservice ii anacron ii apt-transport-https
    9. ii acl ii apache2 ii apt-utils
    10. ii acpi-support ii apache2-bin ii apt-xapian-index
    11. ii acpid ii apache2-data ii aptdaemon
    12. ii add-apt-key ii apache2-utils ii aptdaemon-data
    13. 2017-01-06 13:19 Page 2
    14. ii aptitude ii avahi-daemon ii bind9-host
    15. ii aptitude-common ii avahi-utils ii binfmt-support
    16. ii apturl ii aview ii binutils
    17. ii apturl-common ii banshee ii bison
    18. ii archdetect-deb ii baobab ii blt
    19. ii aspell ii base-files ii blueberry
    20. ii aspell-en ii base-passwd ii bluetooth
    21. ii at-spi2-core ii bash ii bluez
    22. ii attr ii bash-completion ii bluez-cups
    23. ii avahi-autoipd ii bc ii bluez-obexd
    24. .....

    其中,使用的标志如下:

    • --column 定义在输出中创建的列数。
    • -l 指定页面的长度(默认是 66 行)。

    10、 tr 命令行

    这个命令从标准输入转换或者删除字符,然后输出结果到标准输出。

    使用 tr 的语法如下:

    
    
    1. tr options set1 set2

    看一下下面的例子,在第一个命令,set1( [:upper:] ) 代表指定输入字符的大小写(都是大写字符)。set2([:lower:]) 代表期望结果字符的大小写。第二个例子意思相似,转义字符 \n 表示在新的一行打印输出:

    
    
    1. tecmint@TecMint ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:]
    2. www.tecmint.com
    3. tecmint@TecMint ~ $ echo "news.tecmint.com" | tr [:lower:] [:upper:]
    4. NEWS.TECMINT.COM

    11、 more 命令

    more 命令是一个有用的文件过滤器,最初为查看证书而建。它一页页显示文件内容,用户可以通过按回车来显示更多的信息。

    你可以像这样使用它来显示大文件:

    
    
    1. tecmint@TecMint ~ $ dmesg | more
    2. [ 0.000000] Initializing cgroup subsys cpuset
    3. [ 0.000000] Initializing cgroup subsys cpu
    4. [ 0.000000] Initializing cgroup subsys cpuacct
    5. [ 0.000000] Linux version 4.4.0-21-generic (buildd@lgw01-21) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
    6. 4.4.6)
    7. [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
    8. [ 0.000000] KERNEL supported cpus:
    9. [ 0.000000] Intel GenuineIntel
    10. [ 0.000000] AMD AuthenticAMD
    11. [ 0.000000] Centaur CentaurHauls
    12. [ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
    13. [ 0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
    14. [ 0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
    15. [ 0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
    16. [ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
    17. [ 0.000000] x86/fpu: Using 'eager' FPU context switches.
    18. [ 0.000000] e820: BIOS-provided physical RAM map:
    19. [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
    20. [ 0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
    21. [ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
    22. [ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
    23. [ 0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
    24. [ 0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
    25. --More--

    12、 less 命令

    less 是和上面的 more 命令相反的一个命令,但是它提供了额外的特性,而且对于大文件,它会更快些。

    按照 more 命令相同的方式使用它:

    
    
    1. tecmint@TecMint ~ $ dmesg | less
    2. [ 0.000000] Initializing cgroup subsys cpuset
    3. [ 0.000000] Initializing cgroup subsys cpu
    4. [ 0.000000] Initializing cgroup subsys cpuacct
    5. [ 0.000000] Linux version 4.4.0-21-generic (buildd@lgw01-21) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
    6. 4.4.6)
    7. [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
    8. [ 0.000000] KERNEL supported cpus:
    9. [ 0.000000] Intel GenuineIntel
    10. [ 0.000000] AMD AuthenticAMD
    11. [ 0.000000] Centaur CentaurHauls
    12. [ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
    13. [ 0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
    14. [ 0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
    15. [ 0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
    16. [ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
    17. [ 0.000000] x86/fpu: Using 'eager' FPU context switches.
    18. [ 0.000000] e820: BIOS-provided physical RAM map:
    19. [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
    20. [ 0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
    21. [ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
    22. [ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
    23. [ 0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
    24. [ 0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
    25. :

    学习为什么 Linux 下进行有效的文件浏览, ‘less’ 比 ‘more’ 命令更快

    展开全文
  • 在这篇文章中,我们将会看一些 Linux 中的过滤器命令行工具。过滤器是一个程序,它从标准输入读取数据,在数据上执行操作,然后把结果写到标准输出。 因此,它可以用来以强大的方式处理信息,例如重新结构化输出以...

    在这篇文章中,我们将会看一些 Linux 中的过滤器命令行工具。过滤器是一个程序,它从标准输入读取数据,在数据上执行操作,然后把结果写到标准输出。

    因此,它可以用来以强大的方式处理信息,例如重新结构化输出以生成有用的报告,修改文件里面的文本,以及其他很多系统管理任务。

    下面是 Linux 上的一些有用的文件或者文本过滤器。

    Linux上12个高效的文本过滤命令

    1、 awk 命令

    awk 是一个卓越的模式扫描和处理语言,它可被用于在 Linux 下构造有用的过滤器。你可以通过阅读我们的 awk 系列 1 到 13 部分 来开始使用它。

    另外,也可以通过阅读 awk 的 man 手册来获取更多的信息和使用选项。

    
    
    1. $ man awk 

    2、 sed 命令

    sed 是一款过滤和转换文本的强大的流编辑器。我们已经写了两篇关于 sed 的有用的文章,你可以通过这儿来了解:

    • 如何使用 GNU sed 命令在 Linux 下创建、编辑和处理文件
    • 日常 Linux 系统管理员任务使用的 15 个有用的 sed 命令小贴士和技巧

    sed 的 man 手册已经添加控制选项和说明:

    
    
    1. $ man sed 

    3、 grep、 egrep、 fgrep、 rgrep 命令行

    这些过滤器输出匹配指定模式的行。它们从一个文件或者标准输入读取行,并且输出所有匹配的行,默认输出到标准输出。

    注意:主程序是 grep,这些变体与使用特定的选项的 grep 相同,如下所示(为了向后兼容性,它们依旧在使用):

    
    
    1. $ egrep = grep -E  
    2. $ fgrep = grep -F  
    3. $ rgrep = grep -r 

    下面是一些基本的 grep 命令:

    
    
    1. tecmint@TecMint ~ $ grep "aaronkilik" /etc/passwd 
    2. aaronkilik:x:1001:1001::/home/aaronkilik: 
    3. tecmint@TecMint ~ $ cat /etc/passwd | grep "aronkilik" 
    4. aaronkilik:x:1001:1001::/home/aaronkilik: 

    在 Linux 下的 grep、 egrep 和 fgrep 的差异?中,你可以了解更多。

    4、 head 命令

    head 用于显示文件前面的部分,默认情况下它输出前 10 行。你可以使用 -n 标志来指定显示的行数:

    
    
    1. tecmint@TecMint ~ $ head /var/log/auth.log   
    2. Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0) 
    3. Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root 
    4. Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py 
    5. Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0) 
    6. Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root 
    7. Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0) 
    8. Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root 
    9. Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0) 
    10. Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root 
    11. Jan  2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0) 
    12. tecmint@TecMint ~ $ head  -n 5 /var/log/auth.log   
    13. Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0) 
    14. Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root 
    15. Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py 
    16. Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0) 
    17. Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root 

    学习如何 使用带有 tail 和 cat 命令的 head 命令,以便在 Linux 下更有效的使用。

    5、 tail 命令

    tail 输出一个文件的后面的部分(默认 10 行)。使用 -n 选项来指定显示的行数。

    下面的命令将会输出指定文件的最后 5 行:

    
    
    1. tecmint@TecMint ~ $ tail -n 5 /var/log/auth.log 
    2. Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22. 
    3. Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22. 
    4. Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting. 
    5. Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22. 
    6. Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22. 

    另外,tail 有一个特殊的选项 -f ,可以 实时查看一个文件的变化 (尤其是日志文件)。

    下面的命令将会使你能够监控指定文件的变化:

    
    
    1. tecmint@TecMint ~ $ tail -f /var/log/auth.log 
    2. Jan  6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22. 
    3. Jan  6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting. 
    4. Jan  6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22. 
    5. Jan  6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22. 
    6. Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting. 
    7. Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22. 
    8. Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22. 
    9. Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting. 
    10. Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22. 
    11. Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22. 

    阅读 tail 的 man 手册,获取使用选项和说明的完整内容:

    
    
    1. $ man tail 

    6、 sort 命令

    sort 用于将文本文件或标准输入的行进行排序。

    下面是一个名为 domain.list 的文件的内容:

    
    
    1. tecmint@TecMint ~ $ cat domains.list 
    2. tecmint.com 
    3. tecmint.com 
    4. news.tecmint.com 
    5. news.tecmint.com 
    6. linuxsay.com 
    7. linuxsay.com 
    8. windowsmint.com 
    9. windowsmint.com 

    你可以像这样运行一个简单的 sort 命令 来排序文件内容:

    
    
    1. tecmint@TecMint ~ $ sort domains.list 
    2. linuxsay.com 
    3. linuxsay.com 
    4. news.tecmint.com 
    5. news.tecmint.com 
    6. tecmint.com 
    7. tecmint.com 
    8. windowsmint.com 
    9. windowsmint.com 

    你可以有多种方式来使用 sort 命令,请参阅以下一些关于 sort 命令的有用的文章。

    如何基于修改日期和时间来查找和排序文件

    7、 uniq 命令

    uniq 命令用于报告或者忽略重复行,它从标准输入过滤行,并且把结果写到标准输出。

    在对一个输入流运行 sort 之后,你可以使用 uniq 删除重复行,如下例所示。

    为了显示行出现的数目,使用 -c 选项,要在对比时忽略大小写的差异,使用 -i 选项:

    
    
    1. tecmint@TecMint ~ $ cat domains.list 
    2. tecmint.com 
    3. tecmint.com 
    4. news.tecmint.com 
    5. news.tecmint.com 
    6. linuxsay.com 
    7. linuxsay.com 
    8. windowsmint.com 
    9. tecmint@TecMint ~ $ sort domains.list | uniq -c  
    10. 2 linuxsay.com 
    11. 2 news.tecmint.com 
    12. 2 tecmint.com 
    13. 1 windowsmint.com  

    通过阅读 uniq 的 man 手册来获取进一步的使用信息和选项:

    
    
    1. $ man uniq 

    8、 fmt 命令行

    fmt 是一款简单的优化的文本格式化器,它重新格式化指定文件的段落,并且打印结果到标准输出。

    以下是从文件 domain-list.txt 提取的内容:

    
    
    1. 1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com 

    为了把上面的内容重新格式化成一个标准的清单,运行下面的命令,使用 -w 选项定义最大行宽度:

    
    
    1. tecmint@TecMint ~ $ cat domain-list.txt  
    2. 1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com 
    3. tecmint@TecMint ~ $ fmt -w 1 domain-list.txt 
    4. 1.tecmint.com  
    5. 2.news.tecmint.com  
    6. 3.linuxsay.com  
    7. 4.windowsmint.com 

    9、 pr 命令

    pr 命令转换文本文件或者标准输入之后打印出来。例如在 Debian 系统上,你可以像下面这样显示所有的安装包:

    
    
    1. $ dpkg -l 

    为了将要打印的列表在页面和列中组织好,使用以下命令。

    
    
    1. tecmint@TecMint ~ $ dpkg -l | pr --columns 3 -l 20   
    2. 2017-01-06 13:19                                                  Page 1 
    3. Desired=Unknown/Install ii  adduser             ii  apg 
    4. | Status=Not/Inst/Conf- ii  adwaita-icon-theme  ii  app-install-data 
    5. |/ Err?=(none)/Reinst-r ii  adwaita-icon-theme- ii  apparmor 
    6. ||/ Name                ii  alsa-base               ii  apt 
    7. +++-=================== ii  alsa-utils            ii  apt-clone 
    8. ii  accountsservice     ii  anacron               ii  apt-transport-https 
    9. ii  acl                 ii  apache2               ii  apt-utils 
    10. ii  acpi-support        ii  apache2-bin           ii  apt-xapian-index 
    11. ii  acpid               ii  apache2-data          ii  aptdaemon 
    12. ii  add-apt-key         ii  apache2-utils         ii  aptdaemon-data 
    13. 2017-01-06 13:19                                                  Page 2 
    14. ii  aptitude            ii  avahi-daemon          ii  bind9-host 
    15. ii  aptitude-common     ii  avahi-utils           ii  binfmt-support 
    16. ii  apturl              ii  aview                   ii  binutils 
    17. ii  apturl-common       ii  banshee               ii  bison 
    18. ii  archdetect-deb      ii  baobab                ii  blt 
    19. ii  aspell              ii  base-files            ii  blueberry 
    20. ii  aspell-en           ii  base-passwd           ii  bluetooth 
    21. ii  at-spi2-core        ii  bash                    ii  bluez 
    22. ii  attr                ii  bash-completion     ii  bluez-cups 
    23. ii  avahi-autoipd       ii  bc                      ii  bluez-obexd 
    24. ..... 

    其中,使用的标志如下:

    • --column 定义在输出中创建的列数。
    • -l 指定页面的长度(默认是 66 行)。

    10、 tr 命令行

    这个命令从标准输入转换或者删除字符,然后输出结果到标准输出。

    使用 tr 的语法如下:

    
    
    1. $ tr options set1 set2 

    看一下下面的例子,在第一个命令,set1( [:upper:] ) 代表指定输入字符的大小写(都是大写字符)。 set2([:lower:]) 代表期望结果字符的大小写。第二个例子意思相似,转义字符 \n 表示在新的一行打印输出:

    
    
    1. tecmint@TecMint ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:] 
    2. www.tecmint.com 
    3. tecmint@TecMint ~ $ echo "news.tecmint.com" | tr [:lower:] [:upper:] 
    4. NEWS.TECMINT.COM 

    11、 more 命令

    more 命令是一个有用的文件过滤器,最初为查看证书而建。它一页页显示文件内容,用户可以通过按回车来显示更多的信息。

    你可以像这样使用它来显示大文件:

    
    
    1. tecmint@TecMint ~ $ dmesg | more 
    2. [    0.000000] Initializing cgroup subsys cpuset 
    3. [    0.000000] Initializing cgroup subsys cpu 
    4. [    0.000000] Initializing cgroup subsys cpuacct 
    5. [    0.000000] Linux version 4.4.0-21-generic (buildd@lgw01-21) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic 
    6. 4.4.6) 
    7. [    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7 
    8. [    0.000000] KERNEL supported cpus: 
    9. [    0.000000]   Intel GenuineIntel 
    10. [    0.000000]   AMD AuthenticAMD 
    11. [    0.000000]   Centaur CentaurHauls 
    12. [    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256 
    13. [    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers' 
    14. [    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers' 
    15. [    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers' 
    16. [    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format. 
    17. [    0.000000] x86/fpu: Using 'eager' FPU context switches. 
    18. [    0.000000] e820: BIOS-provided physical RAM map: 
    19. [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable 
    20. [    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved 
    21. [    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved 
    22. [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable 
    23. [    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved 
    24. [    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable 
    25. --More-- 

    12、 less 命令

    less 是和上面的 more 命令相反的一个命令,但是它提供了额外的特性,而且对于大文件,它会更快些。

    按照 more 命令相同的方式使用它:

    
    
    1. tecmint@TecMint ~ $ dmesg | less 
    2. [    0.000000] Initializing cgroup subsys cpuset 
    3. [    0.000000] Initializing cgroup subsys cpu 
    4. [    0.000000] Initializing cgroup subsys cpuacct 
    5. [    0.000000] Linux version 4.4.0-21-generic (buildd@lgw01-21) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic 
    6. 4.4.6) 
    7. [    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7 
    8. [    0.000000] KERNEL supported cpus: 
    9. [    0.000000]   Intel GenuineIntel 
    10. [    0.000000]   AMD AuthenticAMD 
    11. [    0.000000]   Centaur CentaurHauls 
    12. [    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256 
    13. [    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers' 
    14. [    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers' 
    15. [    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers' 
    16. [    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format. 
    17. [    0.000000] x86/fpu: Using 'eager' FPU context switches. 
    18. [    0.000000] e820: BIOS-provided physical RAM map: 
    19. [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable 
    20. [    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved 
    21. [    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved 
    22. [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable 
    23. [    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved 
    24. [    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable 

    学习为什么 Linux 下进行有效的文件浏览, ‘less’ 比 ‘more’ 命令更快。

    基本上就这些了,如果你还知道其他本文没有提供的 Linux 下有用的文本过滤命令行工具,可以在下面的评论部分通知我们。

    作者简介:Aaron Kili 是一名 Linux 和 F.O.S.S 爱好者、一名未来的 Linux 系统管理员、web 开发者,并且目前是一名 TecMint 上的内容创造者,他喜欢计算机相关的工作,并且坚信知识的分享。





    作者:Aaron Kili
    来源:51CTO
    展开全文
  • Linux文件过滤及内容编辑处理 1.vi/vim纯文本编辑器 Vim是一个高度可配置的文本编辑器,其构建目的是使创建和更改任何类型的文本非常高效。它被作为“vi”包含在大多数UNIX系统和苹果OS X中。 Vim是非常稳定的,它的...
  • linux搜索过滤--grep

    2019-10-06 11:59:08
    grep在服务端查询消息时经常会被使用到,这里总结几个常用,简单的命令,熟练掌握可以使查询更为高效。  基本格式: grep [option] pattern file  几个重要的命令参数,这里不列举全部,只列举可能会常用的...
  • 1.grep //搜索字符串 grep [-acinv] ‘搜寻字符串’ filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c :计算找到 ‘搜寻字符串’ 的次数 -i :忽略大小写的不同,所以大小写视为相同 ...
  • 在这篇文章中,我们将会看一些 Linux 中的过滤器命令行工具。过滤器是一个程序,它从标准输入读取数据,在数据上执行操作,然后把结果写到标准输出。-- Aaron Kili本文导航-1、 awk 命令03%-2、 sed 命令05%-3、 ...
  • Linux下生成MAC地址的方法有很多种,除了常见的shell生成法外,还能通过Perl、ruby等方法来生成MAC地址,下面小编对MAC地址的自动生成方法做了简单的汇总。一、shell生成法shell生成的方法是最多的的,同时也感觉也...
  • Linux内核防火墙的包过滤机制

    千次阅读 2010-07-16 16:42:00
    作为内核网络协议的一个扩展集,Netfilter可以在内核内部高效地进行包过滤、网络地址转换(NAT)和包重组。对于网络安全防护来讲,主要用到的是Netfilter的包过滤功能,本节也将就这一主题展开描述。 1. Linux...
  • 1.什么是布隆过滤器 布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。 相比于传统的 List...
  • 概述linux环境下,日常应用中都离不开日志。日志是我们在排查问题的一个重要依据。但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了。于是,很有...
  • 介绍CopyQ是具有编辑和脚本功能的...功能特点支持Linux,Windows和OS X 10.9+存储文本,HTML,图像或任何其他自定义格式快速浏览和过滤剪贴板历史记录中的项目排序,创建,编辑,删除,复制/粘贴,拖放选项卡中的项...
  • linux环境下,日常应用中都离不开日志。日志是我们在排查问题的一个重要依据。但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了。于是,很有必要...
  • linux正则表达式

    2017-08-06 17:05:47
    linux正则表达式1.1 定义过滤,在文件中找东西省事,提高我们的效率正则表达式就是为了处理大量的文字、文本、字符串而定义的一套规则和方法linux正则表达式一般以行为单位处理的一次处理一行1.2正则表达式的特点...
  • Linux正则表达式

    千次阅读 2018-08-15 20:06:48
    什么是正则表达式? 简单的说,正则表达式...linux的正则表达式,最常应用正则表达式的命令就是grep、egrpe、sed、awk,换句话说linux三剑客要想能工作的更高效,那一定离不开正则表达式的配合。 正则表达式和我...
  • Linux 正则表达式

    2017-11-26 14:46:00
    正则表达式可以用来处理大量的文件和字符串,运维工作中过滤日记简单高效Linux最常应用正则表达式的命令有grep(egrep)、sed、awk。 正则表达式和文本通配符不同容易混淆。 字符匹配 . 匹配任意单个字符 [] ...
  • Linux正则表达式总结

    2017-09-09 22:41:00
    Linux正则表达式总结 正则表达式: 简单的说,正则表达式就是一套处理字符串的规则和方法。以行为单位对字符串进行处理,通过特殊的符号的辅助,可以快速的过滤,替换某些需要的字符串。 运维工作中,会有大量访问...
  • linux 设计思想

    2019-07-02 19:06:50
    port 舍高效而取可移植性 flat 使用纯文本文件来使用数据 resue 充分利用软件的杆杠效应 script 使用shell脚本来提高杆杠效应和可移植性 nocui 避免那些强制的用户界面 filter 让每一个程序都成为过滤器 ...
  • Linux (CentOS)Ipset

    2021-05-11 10:02:59
    而不像普通的iptables链是线性的存储和过滤,ip集合存储在带索引的数据结构中,这种集合比较大也可以进行高效的查找。在许多的linux发布中ipset是一个简单的安装包,可以通过linux发行版提供的yum进行安装 创建ipset...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 147
精华内容 58
关键字:

linux高效过滤

linux 订阅