//雪花飘落特效 //右上角github跳转   

文本查看及处理工具wc, cut, sort, uniq

    • cut:截取文件的片段

    使用语法:cut OPTION… [FILE]…

    OPTION选项:

    -d CHAR:以指定的字符为分隔符;不指定时以空白字符为分隔符

    -f (#|#-#|#,#)FIELDS:挑选出的字段;

    以:作为分隔符,截取第1,7字段。

    [root@localhost ~]# cut -d : -f 1,7 /tmp/passwd 此命令选项和参数之间可以省略空格

    root:/bin/bash

    bin:/sbin/nologin

    daemon:/sbin/nologin

    adm:/sbin/nologin

    lp:/sbin/nologin

     

    #:指定的单个字段;

    #-#:连续的多个字段;

    #,#:离散的多个字段;

    [root@localhost ~]# cut -d : -f1,3-5,7 /tmp/passwd

    root:0:0:root:/bin/bash

    bin:1:1:bin:/sbin/nologin

     

     

  • sort:查看文件时按指定参数进行排序
  • 使用语法:sort  [OPTION]…  [FILE]…OPTION选项:-n:基于数值大小而非字符进行排序;

    -t CHAR:指定分隔符;

    -k #:用于排序比较的字段;

    -r:逆序排序;

    -f:忽略字符大小写

    -u:重复的行只保留一份;

    重复行:连续且相同;sort默认字母排序,所以显示的相同的内容自然就连续显示

    示例:使用:做分隔符,以第3字段排序,按照数值大小排序。

    [root@localhost ~]# sort -t: -k3 -n /tmp/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

 

  • uniq:报告或移除重复的行
  • 使用语法:uniq [OPTION]… [INPUT [OUTPUT]]OPTION选项:-c:显示每行的重复次数;

    -u:仅显示未曾重复过的行;

    -d:仅显示重复过的的行;

    示例:

    [root@localhost ~]# cut -d: -f7 /tmp/passwd | sort | uniq -c

    4 /bin/bash

    1 /bin/sh

    1 /bin/sync

    1 /bin/tcsh

    1 /sbin/halt

    15 /sbin/nologin

    1 /sbin/shutdown

 

  • wc:word count查看文件的统计信息,行数、单词数、字节数

使用语法wc  [OPTION]…  [FILE]…

OPTION选项:

-l: lines仅显示行数

-w:words仅显示单词数

-c: bytes仅显示字节数

示例1:

[root@localhost ~]# wc /etc/fstab

12  60 541 /etc/fstab

[root@localhost ~]# wc -w /etc/fstab

60 /etc/fstab

[root@localhost ~]# wc -c /etc/fstab

541 /etc/fstab

[root@localhost ~]# wc -l /etc/fstab

12 /etc/fstab

示例2:

[root@localhost ~]# cat /etc/passwd | wc

24      43    1139

 

  • 练习题:

1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可

~]# who | cut -d ‘ ‘ -f1 | sort -u
root
test5

 

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

~]# who | tail -1或者last | head -1

test5 pts/2 2018-08-27 12:07 (192.168.1.104)

 

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

~]# cut -d: -f7 /etc/passwd | sort | uniq -c | sort -n | tail -1

15 /sbin/nologin

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

~]# sort -t: -k3 -n /etc/passwd | tail -10 | tr ‘a-z’ ‘A-Z’ > /tmp/maxusers.txt
~]# cat /tmp/maxusers.txt
TEST:X:3000:3000::/HOME/TEST:/BIN/BASH
CORE:X:4002:4002:FEDORA:/HOME/CORE:/BIN/TCSH
FEDORA:X:4003:4003:FEDORA CORE:/VAR/TMP/FEDORA:/BIN/SH

 

5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分

~]# ifconfig | grep -o “inet\>.*[1-9]$” | cut -d’ ‘ -f 2
192.168.1.117

 

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

~]#ls /etc/*.conf | tr ‘a-z’ ‘A-Z’ > /tmp/etc.conf
~]# cat /tmp/etc.conf
/ETC/ASOUND.CONF
/ETC/DNSMASQ.CONF
/ETC/DRACUT.CONF
/ETC/E2FSCK.CONF
剩余部分省略

 

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

~]# ls /var | wc -w
21

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

~]# sort -t: -k3 -n /etc/group | head -10 | cut -d: -f1
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem

9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中

~]# sort -t: -k3 -n /etc/group | head -10 | cut -d: -f1

~]# cat /tmp/etc.text

#
# /etc/fstab
# Created by anaconda on Fri Jul 27 11:05:50 2018
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk’
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=71e0cb79-3fa4-4b7b-806d-0beaafd5ca2b /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
\S
Kernel \r on an \m

posted @ 2018-11-07 11:36  农夫运维  阅读(205)  评论(0编辑  收藏  举报