第三周学习总结之简单文本处理

写在最前

通过前面的学习,我们已经知道Linux是一个一切皆文件的系统,因此对文件的处理就显得尤为重要,到目前为止,对于新手来说可能连鼎鼎大名的三剑客也未必听过,不过在这之前我们也可以使用一些非常好用的文本处理工具来完成一些简单文件的处理。本次内容就是讲讲如何使用几个简单文本处理工具的组合完成一些实用的功能。

文本处理工具

文本处理工具,用我的理解就是能够对指定文本就行相应处理,提取输出我们想要的结果。沿着这个思想,我们就来挖一挖这些工具,通过挖掘,下一些好用的命令就被我们给发现了,下面就给您慢慢讲讲他们都有哪些。

sort

功能描述:用于对文本进行排序。

语    法:sort   [OPTION]… FILE…

选    项

  • -f: 忽略字符大小写;
  • -t: 指定分隔符,默认为tab, -t “:”表示使用:为分割符;
  • -k: 指定分隔之后要进行排序比较的字段;
  • -n: 使用纯数字进行排序;
  • -u: 排序后去重,表示相同的数据只显示一行;
  • -b:忽略最前面的空格符部分

uniq

功能描述:略去重复的行。

语    法:uniq [OPTION]… [INPUT [OUTPUT]]

选    项

  • -d:只显示存在重复的行;
  • -u:只显示不重复的行;
  • -c: 显示文件中行重复的次数;
  • -i:忽略大小写;

wc

功能描述:统计文件的单词数、字符数。

语    法:wc [OPTION]… [FILE]…

选    项

  • -l:列出行数;
  • -w:列出字(英文单字);
  • -c:列出字符数(字节数)

cut

功能描述:删除文件每行中的特定部分。

语    法:cut OPTION… [FILE]…

选    项

  • -d: 指定分隔符;
  • -f: 依据-d将信息分段,取第几段的意思;
  • -c:以字符取出固定区间;

tr

功能描述:翻译或删除字符。

语    法:tr [OPTION]… SET1 [SET2]

选    项

  • -d: 删除指定内容;

示例演示

通过上面的讲解,你可能还是一头雾水,不要着急,下面的时间不是下课时间,而是练习时间,而且条条大路通罗马,只要能达到目的,不管你用哪一种方法实现,都是OK的,好了,那就开始吧!

首先呢,需要说明的是后面的很多处理就不会是单一命令的实现,你可能需要结合前面所学的知识将多个命令组合起来使用。

(1)、列出当前系统上所有已经登录的用户的用户名且同一个用户登录多次,则只显示一次。

通过分析此题啊,首先要知道who命令是查看系统上的登陆用户,并且还要取出他们的用户名,也即是取出特定字段,这里可以使用cut命令,最后就是去重,通过上面的讲解,我们知道sort有个参数就是去重的。有了解题思路,接下来就正式解题吧。

who|who|cut -d ” ” -f1|sort -u

301

(2)、取出最后登录到当前系统的用户的相关信息。

通过前面的学习,使用last命令就可以查看登录到系统的用户,通过查看登录文件格式,可以发现最后登录的反而实在第一行显示,再使用cut命令截取出用户名就可以查看此用户的完整信息了。

last|head -1|cut -d ” ” -f1|id

302

(3)、取出当前系统上被用户当做其默认shell的最多的那个shell。

在上一篇中我们说到用户的完整信息保存在/etc/passwd文件中,因此此题的信息就可以在此文件中获取,在通过上面的文件处理命令辅助就可以完成要求。

cut -d ‘:’ -f 7 /etc/passwd|sort -r|uniq -c|sort -nr|head -1

303

(4)、将/etc/passwd中的第三个字段值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt中。

这里明确给出了以passwd文件的第三个字段就行排序,改为大写不就是tr命令的功能么。

sort -t ‘:’ -k3n /etc/passwd|tail -10|tr ‘a-z’ ‘A-Z’>/tmp/maxusers.txt

304

(5)、取出当前主机的IP地址。

此题也是通过对ifconfig命令取到的结果进行信息切分,取出其中的IP地址。

ifconfig ens33|grep “netmask”|cut -c 13-26

305

(6)、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。

此题也是先要找出要求的文件,然后进行大小写转换即可。

ls /etc/|grep -E ‘.conf$’ |tr ‘a-z’ ‘A-Z’ >/tmp/etc.conf

306

(7)、显示/var目录下一级子目录或文件的总个数。

此处主要用到wc统计个数的功能。

ls /var/|wc -l

307

(8)、取出/etc/group文件中第三个字段数值最小的10个组的名字。

此题上题中的题4类似,大致方法可参照题4。

sort -t ‘:’ -k3n /etc/group|head -10|cut -d ‘:’ -f 1

308

(9)、将/etc/fsteab和/etc/issus文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。

此题读取同一目录下的两个文件可以使用命令行展开方式。

cat /etc/{fstab,issue} >/tmp/etc.test

309

今天的练习就差不多这些了,您学会了么,其他很多看似复杂的问题进行分解,最终都是由一个一个命令组合而来的,就像Linux一样,由众多功能单一的小程序组合完成一个复杂的大程序。因此,我们遇到问题要学会剖析分析,这样才能在杂乱无章中抽丝剥茧,最终出色的完成任务。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90427

(0)
虫草君虫草君
上一篇 2017-12-19 21:05
下一篇 2017-12-19

相关推荐

  • Bash脚本写法及变量如何使用

    Bash是什么? bash脚本是作为linux执行与内核交互的一个方便快捷的脚本语言工具。它可以帮助我们快速的解决问题。 Bash写法: 需要创建一个文件,以.sh结尾。这样就生成一个脚本文件 我们文件内容开头要以#!/bin/bash 开头,这是脚本规定的格式,目的是告诉编译器我们这个脚本是bash类型的脚本。 当上述工作都做好以后,我们就可以正式开始脚本…

    Linux干货 2017-04-10
  • 脚本编写规范

    脚本编写规范 脚本名称以.sh结尾,名称见名知意 尽量使用UTF-8编码,注释及输出尽量使用英文 一般给到执行权限,但一些关于变量的配置文件不用加执行权限 执行的时候可以使用bash执行,或者使用bash -x 调试执行 脚本首行以#!/bin/bash,无空格,不带选项 第二行为空格或者添加一行空注释 开始注释内容:  #!/bin/bash&n…

    Linux干货 2017-04-16
  • lvm逻辑卷管理

    lvm逻辑卷管理: 允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小 允许在多个物理设备间重新组织文件系统,将设备指定为物理卷 用一个或者多个物理卷来创建一个卷组 物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的 在物理卷上创建的逻辑卷是由物理区域(PE)组成 可以在逻辑卷上创建文件系统 创建: 创建物理卷: pvcrea…

    Linux干货 2016-09-01
  • 第五周作业

    1、显示当前系统上root、fedora或user1用户的默认shell; 答:#egrp ‘^(root|fedora|user1)’ /etc/passwd | cut -f1,7 -d: 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(); 答:#egrp -o &…

    Linux干货 2017-02-25
  • centos 7 修改sshd服务默认端口号

    由于最近sshd服务默认端口号22被匿名进行试探性的进行登入,为防止匿名用户再次进行试探性的登入,将sshd服务的默认端口号进行修改。 环境:centos 7.3  xshell 思路:先将sshd的被指文件进行修改,把sshd服务的默认端口号修改为所需要的端口号,然后重启sshd服务,发现重启报错。找其原因是应为selinux不允许自定义sshd…

    Linux干货 2017-04-06
  • grep,egrp,fgrep 命令与正则表达式

    一 简介     grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 Unix的grep家族包括grep、egrep和fgrep…

    Linux干货 2016-01-19

评论列表(1条)

  • 马哥教育
    马哥教育 2018-01-07 17:19

    赞,排版比较清晰,最后部分也有自己思考的部分,很赞~~继续加油。