文件处理工具

Linux的哲学思想之一是一切皆文件,所有系统中有许多文本文件。因此Linux有许多关于文本处理的命令。


cat命令

连接文件并打印到标准输出设备上,cat经常用来显示文件内容。


语法

cat [OPTION]… [FILE]…


常用选项

-A, --show-all #显示所有控制符
-b, --number-nonblank #显示非空格行号
-E, --show-ends #显示结束符,没行后面会加个$
-n, --number #对每行编号
-s, --squeeze-blank #压缩相邻的行的单个空行

例如

[root@localhost ~]# cat -An /etc/issue #显示所所控制符,次文只有换行。n对没行编号
     1\S$
     2Kernel \r on an \m$
     3$
     4Mage Education Learning Services$
     5http://www.magedu.com$
     6$

[root@localhost ~]# cat -b /etc/issue #b不对空行编号
     1\S
     2Kernel \r on an \m
     3Mage Education Learning Services
     4http://www.magedu.com

[root@localhost ~]# cat >file #cat也经常用来创建新文件,输入内容再ctrl+d结束即可。
a b c d e 
f g h a d
k l m n q
[root@localhost ~]# ll file #列出是否创建了file文件
-rw-r--r-- 1 root root 31 Aug  8 16:58 file
[root@localhost ~]# cat file #查看file内容
a b c d e 
f g h a d
k l m n q
[root@localhost ~]# cat file ff #也可以同时查看2个文件
a b c d e 
f g h a d
k l m n q
  ddd
dd
dd dd
 d 
d 
 1
  2
   3
    4[root@localhost ~]# cat file ff >new file#合并文一个文件

cut命令

用来显示行中的指定部分,删除文件中指定字段。经常与cat连用

语法

cut OPTION… [FILE]…

选项

-b, --bytes=LIST #按字节切割(3个字节一个汉字)
-c, --characters=LIST #按字符切割
-d, --delimiter=DELIM #指定分隔符
-f, --fields=LIST#显示指定字段内容
   N:只显示第N个字段
   N-:只显示第N字段之后的行
   N-M:显示N到M的行
   N,M:显示N和M的行
--complement #补充被选择的字节、字符或字段。
--output-delimiter=STRING #自己切割的内容的指定分隔符
-n   #与-b同用,不切割字符(匹配汉字是用)

 

例如

[root@localhost ~]# tail -5 /etc/passwd |cut -d: -f3- #显示以":"分隔的第三字段开始显示
497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
72:72::/:/sbin/nologin
500:500:Alan,Home,111,000:/home/linux:/bin/csh
501:501::/home/Alan:/bin/bash
[root@localhost ~]# tail -5 /etc/passwd|cut -c1,3 --output-delimiter=good #用c指定1,3字符显示再用good分割。
pgoodl
sgoodh
tgoodp
lgoodn
Agooda

sort命令

将文件进行排序,并将排序结果标准输出。

语法

sort [OPTION]… [FILE]…

sort [OPTION]… –files0-from=F

常用选项

-r, --reverse #倒序显示
-n, --numeric-sort #按数字大小排序
-f, --ignore-case #忽略字符大小写
-u, --unique #选项(独特,unique)删除输出中的重复行
-t, --field-separator=SEP #界定分隔符
-k, --key=KEYDEF #界定列数

例如

[root@localhost ~]# tail -5 /etc/passwd|sort #默认按字母排序
Alan:x:501:501::/home/Alan:/bin/bash
linux:x:500:500:Alan,Home,111,000:/home/linux:/bin/csh
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
[root@localhost ~]# tail -5 /etc/passwd|sort -t: -k3 -n #按":"分隔 指定第三段用数字排序
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
linux:x:500:500:Alan,Home,111,000:/home/linux:/bin/csh
Alan:x:501:501::/home/Alan:/bin/bash

uniq命令

用于报告或忽略文件中的重复行,一般与sort结合使用

语法

uniq [OPTION]… [INPUT [OUTPUT]]

常用选项

-c, --count #显示重复的行数
-d, --repeated#仅显示重复的行列
-u, --unique :仅显示不重复的行列

例如

[root@localhost ~]# tail /etc/passwd |cut -d: -f4-7|sort|uniq -c #仅显示重复的行
      1 1000:mageedu:/home/mageedu:/bin/bash
      1 1001::/home/roo:/bin/bash
      1 1002::/home/ro:/bin/bash
      1 1003::/home/rooo:/bin/bash
      1 1004::/home/133:/bin/bash
      1 38::/etc/ntp:/sbin/nologin
      1 65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
      1 72::/:/sbin/nologin
      1 74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
      1 89::/var/spool/postfix:/sbin/nologin

练习

1、找出ifconfig命令结果中本机的所有IPv4地址

[root@localhost ~]# ifconfig|tr -cs '[0-9].' '\n'|sort -ut'.' -k3 #先列出网卡信息在用tr命令把除了数字和.的数字全部转换成换行符(\n),再用sort以"."做分隔符,列出3列
255.255.0.0
127.0.0.1
192.168.200.255
192.168.200.7
255.255.255.0
10.1.255.255
10.1.36.7

2、查出分区空间使用率的最大百分比值

[root@localhost ~]# df|tr -cs '\n'|cut -d' ' -f5|tr -d '%' #df列出分区信息在用tr 把换行符压缩然后用cut用-d以空白做分隔符匹配第5字段最后用tr把多余的%删除
Use #显示结果
1
0
0
3
0
13

29

0

3、查出用户UID最大值的用户名、UID及shell类型

[root@localhost ~]# getent passwd|sort -t: -nk3|cut -d: -f1,3,7|tail -1#列出信息用sort以":"为分隔符指定第三字段按数字排序再用cut以":"分隔 去1,3,7字段最后显示最后一行即可

nfsnobody:65534:/sbin/nologin #显示结果

4、查出/tmp的权限,以数字方式显示

[root@localhost ~]# stat /tmp|tr -s '[:punct:]' ' '|cut -d' ' -f2|head -4|tail -1 #列出信息用tr把标点符号都转换为空行 在用cut以空格为分隔符 去第二字段在显示前4行再显示后1行
1777 #得出结果

5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序

[root@localhost ~]# netstat -nt|tr -s ' '|cut -d' ' -f4|tr -cs '[0-9].:' '\n' #列出信息,用cut以空白做分隔符去第4段在用tr命令把出0到9的数字和"."的字符转换为换行符进行压缩、最后得出结果
192.168.200.7:22
192.168.200.7:22 #结果
192.168.200.7:22

原创文章,作者:ladsdm,如若转载,请注明出处:http://www.178linux.com/31383

(0)
ladsdmladsdm
上一篇 2016-08-08 20:10
下一篇 2016-08-08 20:10

相关推荐

  • 文件查找命令Find

    文件查找命令find Find:在文件上查找符合条件的文件,是个实时的查找工具,通过遍历指定路径完成文件查找 工作特点: l  查找速度慢 l  精度查找 l  实时查找 l  可能只搜索用户具有读取和执行权限的目录   语法: find [option]…[查找路径][查找条件][处理动作]   …

    Linux干货 2016-08-16
  • Week2 bash特性及文件相关

    1. 文件类命令及其常用的使用方法 文本查看类命令cat head tail more less 分屏查看命令 more lessmore FILE 翻至最后一页自动退出less FILE -f 翻至最后一页不退出 若有追加内容则立即显示 首尾查看命令head tail head命令: 查看文件前n行 head FILEhead [option] FILEh…

    Linux干货 2016-12-11
  • sed与vim浅析

    sed与vim sed Stream EDitor, 行编辑器,sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”( pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。…

    Linux干货 2016-08-10
  • 一位老it工程师的忠告,新手进来学习,老手进来体会,收获很大。

    诸位,咱当电子工程师也是十余年了,不算有出息,环顾四面,也没有看见几个有出息的!回顾工程师生涯,感慨万千,愿意讲几句掏心窝子的话,也算给咱们师弟师妹们提个醒,希望他们比咱们强! [1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐…

    Linux干货 2015-02-26
  • 第二周

    #第二周blog 作业 第二周blog 作业 1 目录管理命令:mkdir、rmdir mkdir命令 mkdir – make directories      mkdir [OPTION]… DIRECTORY…   &nbsp…

    Linux干货 2016-12-12
  • IO重定向和管理及管道

    IO重定向   通常对程序来讲,输入输出数据可以是键盘、鼠标、显示器等;IO重定向就是将原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器输出而是希望输入到某以文件中的可以通过Linux重定向进行这项工作。  IO重定向和FD(File Descriptor)有关。      标准输入(std…

    Linux干货 2016-08-05