Linux系统中的文本处理工具

在大家刚接触Linux操作系统,首先都会让你了解linux的哲学思想:一切皆文件;那么今天就带大家认识linux中的一些文本查看工具。



1、cat和tac

连接文件并在标准输出上打印;其中cat是正向显示;tac是倒着显示

  • 格式:cat [  options ]... [ FILE ]...
  • 选项:

    -E filename 能看到行的结束符

    -A filename 能看到tab键 回车

    -n filename 加行号

    -s filename 压缩空行(连续相邻的空行)

    -b 加行号,但空行不加    cat > f3 给文件写入内容(nl==cat -b )

  • 实例:
[ [email protected] ~ ]#vim 1
[ [email protected] ~ ]#
[ [email protected] ~ ]#
[ [email protected] ~ ]#cat 1 # 直接cat文件名,便可看见文件中的内容,保留原格式
12
dsf

ghjk

hadoop
[ [email protected] ~ ]#cat -n 1  # -n 查看时添加行号
     1    12
     2    dsf
     3    
     4    ghjk
     5        
     6    hadoop
[ [email protected] ~ ]#cat -E 1  # -E 选项能看到每行的结束符$
12$
dsf$
$
ghjk$
    $
hadoop$
[ [email protected] ~ ]#cat -A 1  # -A 能看到详细的信息,包括tab键以及行结束符 
12$
dsf$
$
ghjk$
^I$
hadoop$
[ [email protected] ~ ]#tac 1  # tac 将文件内容倒着显示
hadoop
    
ghjk

dsf
12
[ [email protected] ~ ]#



2、more:

more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。

  • 格式:

    more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]

  • 选项:

    +n      从笫n行开始显示

    -n       定义屏幕大小为n行

    +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示

    -c       从顶部清屏,然后显示

    -d       提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能,静默模式

    -l        忽略Ctrl+l(换页)字符

    -p       通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似

    -s       把连续的多个空行显示为一行

    -u       把文件内容中的下画线去掉

  • 实例
[ [email protected] ~ ]#cat -n /etc/passwd | more +4  # 表示从第4行开始显示
     4    adm:x:3:4:adm:/var/adm:/sbin/nologin
     5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6    sync:x:5:0:sync:/sbin:/bin/sync
     7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
...后面省略...
[ [email protected] ~ ]#cat -n /etc/passwd | more -4  # 定义屏幕大小为4行,可通过相应操作来上下翻屏
     1    root:x:0:0:root:/root:/bin/bash
     2    bin:x:1:1:bin:/bin:/sbin/nologin
     3    daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4    adm:x:3:4:adm:/var/adm:/sbin/nologin
[ [email protected] ~ ]#cat -n /etc/passwd | more +/halt  # 从halt的行开始显示

...skipping
     8    halt:x:7:0:halt:/sbin:/sbin/halt
     9    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10    operator:x:11:0:operator:/root:/sbin/nologin
    11    games:x:12:100:games:/usr/games:/sbin/nologin
    12    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    13    nobody:x:99:99:Nobody:/:/sbin/nologin
    14    systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
    15    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
...后面的省略...
[ [email protected] ~ ]#
  • 说明:上述实验中,先通过 " cat -n /etc/passwd "让我们显示的时候添加行号,这样方便说明;在通过管道传给 more 命令。这里只做了一些选项的实验,有兴趣的可以把每个选项的都做做。


3、less命令

less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。

在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按
键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

  • 格式:

    less [ OPTIONS  ] FILE...

  • 选项:

    -b <缓冲区大小> 设置缓冲区的大小

    -e  当文件显示结束后,自动离开

    -f  强迫打开特殊文件,例如外围设备代号、目录和二进制文件

    -g  只标志最后搜索的关键词

    -i  忽略搜索时的大小写

    -m  显示类似more命令的百分比

    -N  显示每行的行号

    -o <文件名> 将less 输出的内容在指定文件中保存起来

    -Q  不使用警告音

    -s  显示连续空行为一行

    -S  行过长时间将超出部分舍弃

    -x <数字> 将“tab”键显示为规定的数字空格

  • 常见操作:和man命令中的操作一致;其实man命令的操作都来自less

    /字符串:向下搜索“字符串”的功能

    ?字符串:向上搜索“字符串”的功能

    n:重复前一个搜索(与 / 或 ? 有关)

    N:反向重复前一个搜索(与 / 或 ? 有关)

    b  向后翻一页

    d  向后翻半页

    h  显示帮助界面

    Q  退出less 命令

    u  向前滚动半页

    y  向前滚动一行

    空格键 滚动一行

    回车键 滚动一页

    [pagedown]: 向下翻动一页

    [pageup]:   向上翻动一页

  • 实例
[ [email protected] ~ ]#ps -ef | less -N         # -N 显示行号;这里表示显示进程信息是加行号显示 
      1 UID         PID   PPID  C STIME TTY          TIME CMD
      2 root          1      0  0 12:30 ?        00:00:00 /usr/lib/systemd/systemd --switche      
      3 root          2      0  0 12:30 ?        00:00:00 [kthreadd]
      4 root          3      2  0 12:30 ?        00:00:00 [ksoftirqd/0]
      5 root          6      2  0 12:30 ?        00:00:00 [kworker/u256:0]
      6 root          7      2  0 12:30 ?        00:00:00 [migration/0]
      7 root          8      2  0 12:30 ?        00:00:00 [rcu_bh]
      8 root          9      2  0 12:30 ?        00:00:00 [rcu_sched]
      9 root         10      2  0 12:30 ?        00:00:00 [watchdog/0]
     10 root         12      2  0 12:30 ?        00:00:00 [khelper]
     11 root         13      2  0 12:30 ?        00:00:00 [kdevtmpfs]
     12 root         14      2  0 12:30 ?        00:00:00 [netns]
     13 root         15      2  0 12:30 ?        00:00:00 [khungtaskd]
     14 root         16      2  0 12:30 ?        00:00:00 [writeback]
     15 root         17      2  0 12:30 ?        00:00:00 [kintegrityd]
...后面省略...
[ [email protected] ~ ]#touch 1.txt         # 先创建两个文件并写入内容 ,
[ [email protected] ~ ]#touch 2.txt
[ [email protected] ~ ]#vim 1.txt 
[ [email protected] ~ ]#vim 2.txt 
[ [email protected] ~ ]#less 1.txt 2.txt    # less 浏览多个文件
dhgfas
khsdf
kjasdhfi

1.txt (file 1 of 2) (END) - Next: 2.txt  # 显示了第一个文件的内容,并提示下一个文件Next: 2.txt
  • 说明:

    输入 :n 后,切换到 2.txt

    输入 :p 后,切换到 1.txt

  • 其他用法

    ctrl + F : 向前移动一屏

    ctrl + B :向后移动一屏

    ctrl + D:向前移动半屏

    ctrl + U: 向后移动半屏

    j : 向前移动一行

    k : 向后移动一行

    v : 使用配置的编辑器编辑当前文件

    h : 显示 less 的帮助文档

    &pattern : 仅显示匹配模式的行,而不是整个文件



4、tail 和 head :

tail查看文件尾部;head用于查看文件头部,默认为前10行,也可认为指定显示的行数。

  • 格式:

    head [ OPTIONS ] FILE

    tail [ OPTIONS ] FILE

  • 选项:
    • head的选项:

      -c :打印每个文件的第一个K字节; 使用前导“ - ”,打印每个文件的最后一个K字节

      -n:打印第一个K行而不是前10个; 以‘ - ‘为首,打印每个文件的最后K行

      -q:从不打印头文件名

      -v:始终打印头文件名

    • tail 的选项:

      -c:打印每个文件的第一个K字节; 使用前导“ - ”,打印每个文件的最后一个K字节

      -f:当文件增长时输出附加数据;缺少的选项参数表示“描述符”

      -F:与--follow = name --retry一样

      -n:打印第一个K行而不是前10个; 以‘ - ‘为首,打印每个文件的最后K行

      -s:与-f,休息大概N秒(默认1.0)之间; 与inotify和--pid = P,检查过程P至少每N秒一次

      -q:从不打印头文件名

  • 实例:
[ [email protected] ~ ]#head -n 5 /etc/passwd  # 查看前5行内容
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
[ [email protected] ~ ]#tail -n 5 /etc/passwd   # 查看后5行
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
vinsent:x:1000:1000:vinsent:/home/vinsent:/bin/bash
mage:x:1001:1001::/home/mage:/bin/bash
quagga:x:92:92:Quagga routing suite:/var/run/quagga:/sbin/nologin
[ [email protected] ~ ]#
[ [email protected] ~ ]#head -n 5 /etc/passwd | tail -1  # 只显示第5行
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[ [email protected] ~ ]#
时间: 2024-10-23 13:25:12

Linux系统中的文本处理工具的相关文章

Linux系统上的文本处理工具

Linux系统上的文件处理工具 我们都知道在计算机中,存在大量的文件,这些文件中包含大量的信息.可是有些时候,为了工作的效率,我们在茫茫信息中提取出我们所需要的信息,这样的技能就显得尤为重要.Linux系统上为我我们提供了多种多样的文本处理工具,下面我们来简单说一下. 查看文件内容我们可以使用less命令,cat命令,more命令等等 cat cat [OPTION]... [FILE]... -E: 显示行结束符$ -n: 对显示出的每一行进行编号 -A:显示所有控制符 -b:非空行编号 -s

Linux系统上的文本处理工具之sed

sed命令 sed是一种在线编辑器.行编辑器,一次处理一行内容,在处理时,把当前处理的行存储在临时缓冲区当中,该缓冲区称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完毕后,把缓冲区的内容送到标准输出:然后紧接着去处理下一行,重复完成相同的操作,直至文件结尾:sed处理的整个过程中,对象文件中的内容并没有改变,除非使用重定向来存储处理后的结果.sed主要用来自动编辑一个或多个文件,简化对文件的反复操作过程. sed跟我们之前讲过的文本处理工具vi

Linux系统上的文本处理工具练习题

1.显示/proc/meminfo文件中以大小s开头的行:(要求:使用两种方式) 2.显示/etc/passwd文件中不以/bin/bash结尾的行 3.显示用户rpc默认的shell程序 4.找出/etc/passwd中的两位或三位数 5.显示/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行 6.找出"netstat -tan"命令的结果中以'LISTEN'后跟0.1或多个空白字符结尾的行 7.添加用户bash.testbash.basher以及no

Linux系统中 安装Vmware Toolst工具

前提: 安装虚拟机.可以参考:在Windows上安装虚拟机详细图文教程 安装Linux.可以参考:在VMware Workstation里的Linux操作系统的安装——红旗桌面7.0 第一步,如下图所示,加载Vmware Toolst安装文件. 第二步:断开连接. 第三步: 重新连接. 点击“Vmware Tools”,然后打开虚拟光驱. 选择“用Dolphin打开”,然后点击“确定”. 第四步: 打开了虚拟光驱,把里面的Vmware Tools……压缩文件复制到tmp文件夹下面. 第五步:然后

linux 中的 文本处理工具

文本处理工具 在linux系统中 文本工具有很多 现在具体介绍几款 如 抽取文本的工具 和文件三剑客 文件内容:less和 cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep egrep 首先 有 查看文件的cat tac cat [OPTION]... [FILE]... -E: 显示行结束符$ -n: 对显示出的每一行进行编号 -A:显示所有控制符 -b:非空行编号 -s:压缩连续的空行成一行 tac 与cat 命令 一样 不过是取反 more: 分页查看文件 m

Linux 系统中文本处理“三剑客”之grep

我们写脚本的时候,经常要截取命令输出的某项数据,比如:我要知道主机上有多少块硬盘 这是很方便的.使用grep搜索出我们想要的数据再使用 sed .或 cup 切割就可以取得我们主机的设备名称了,这是我们取数据的一种方法. Egreq 是grep 的升级版,支持扩展表达式.fgrep不支持正则表达式. 使用格式: 1 2 3 4 5 grep [OPTIONS] PATTERN [FILE...]      -o     只打印输出匹配到字符串      -i      做匹配时候忽略大小写   

&nbsp; &nbsp; linux 中的文本处理工具,grep,egrep

一:grep与egrep简介:                    grep与egrep是在linux中对linux文本搜索用的比较多的一个工具.它结合正则表达式实现与模型匹配的行. 二:语法格式: grep [option]... 'PATTERN' FILE... 支持基本正则表达式                  egrep [option]... 'PATTERN' FILE...支持扩展正则表达式                  [option]常用的主要有:          

Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名

Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf  动态库的后缀为*.so  静态库的后缀为 libxxx.a   ldconfig   目录名 转载自:http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情. 在Linux操作系统中,普遍使用ELF格

Linux系统中“动态库”和“静态库”那点事儿【转】

转自:http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情. 在Linux操作系统中,普遍使用ELF格式作为可执行程序或者程序生成过程中的中间格式.ELF(Executable and Linking Format,可执行连接格式)是UNIX系统实验室(USL)作为应用程序二进制