cut 排序 linux,linux文本查看及处理工具wc, cut, sort, uniq和9道练习题

文本查看及处理工具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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值