Linux - tr命令,sort命令,uniq命令,cut命令

2022/2/25 7:23:16

本文主要是介绍Linux - tr命令,sort命令,uniq命令,cut命令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

tr命令

使用tr删除字符串

使用tr压缩字符

sort命令

-n 按整数进行排序

-k 按指定列进行排序

-r 递减排序

-t 指定分隔符 (默认是空白)

uniq 命令

cut 命令

-c 从指定提取范围中提取字符

-f 从指定提取范围中提取字符段


tr命令

字符转换工具

tr - translate or delete characters

只能对stdin操作,不能直接对文件操作

使用tr转换字符

tr set1 set2

用set2中的字符替换set1中的字符

tr命令不支持直接操作,要想办法将参数信息传递给它

需要使用管道或者<给tr传递参数

例:将PATH变量中所有的:替换成\n

例:用重定向与tr结合替换字符

[root@localhost script]# cat 111.txt

aaaa

bbbb

cccc

dddd

[root@localhost script]# tr a A

AAAA

bbbb

cccc

dddd

=========================================================

linux里面的通配符

*代表任意个任意字符 --》n个任意字符

?代表一个任意的字符

[集合] --》每次都只是取其中的一个

[0-9] : 代表0,1,2,---9 每次只取一个

[a-z] : 代表 a,b,c---z

[A-Z] : 代表A-Z

[a-Z] : 代表小写a-大写Z

[0-Z]:代表 0-9 - Z

############################################################

例:将 /etc/hosts文件全部转换为大写字母

[root@localhost lianxi]# cat /etc/hosts | tr '[a-z]' '[A-Z]'

127.0.0.1 LOCALHOST LOCALHOST.LOCALDOMAIN LOCALHOST4 LOCALHOST4.LOCALDOMAIN4

::1 LOCALHOST LOCALHOST.LOCALDOMAIN LOCALHOST6 LOCALHOST6.LOCALDOMAIN6

############################################################

例:将 /etc/hosts文件中的所有数字和 . 都删除

[root@localhost lianxi]# cat /etc/hosts | tr '[0-9.]' ' '

localhost localhost localdomain localhost localhost localdomain

:: localhost localhost localdomain localhost localhost localdomain

############################################################

使用tr删除字符串

tr -d set1

[root@localhost lianxi]# echo 12333456873333 | tr -d 3

1245687

删除所有的数字:

[root@localhost lianxi]# echo 12333456873a333bc | tr -d [0-9]

abc

############################################################

例:删除所有的%

[root@localhost lianxi]# df -Th

文件系统 类型 容量 已用 可用 已用% 挂载点

devtmpfs devtmpfs 475M 0 475M 0% /dev

tmpfs tmpfs 487M 0 487M 0% /dev/shm

tmpfs tmpfs 487M 20M 467M 5% /run

tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup

/dev/mapper/centos-root xfs 17G 4.4G 13G 26% /

/dev/sda1 xfs 1014M 138M 877M 14% /boot

tmpfs tmpfs 98M 0 98M 0% /run/user/0

[root@localhost lianxi]# df -Th | tr -d %

文件系统 类型 容量 已用 可用 已用 挂载点

devtmpfs devtmpfs 475M 0 475M 0 /dev

tmpfs tmpfs 487M 0 487M 0 /dev/shm

tmpfs tmpfs 487M 20M 467M 5 /run

tmpfs tmpfs 487M 0 487M 0 /sys/fs/cgroup

/dev/mapper/centos-root xfs 17G 4.4G 13G 26 /

/dev/sda1 xfs 1014M 138M 877M 14 /boot

tmpfs tmpfs 98M 0 98M 0 /run/user/0

############################################################

例:用数组将df -Th 中以/结尾的这一行中的26截取出来,不要保留%

[root@localhost lianxi]# num1=($(df -Th | grep "/$" | tr -d %))

[root@localhost lianxi]# echo ${num1[5]}

26

############################################################

使用tr压缩字符

tr -s SET

将连续相同的字符压缩成一个字符

[root@localhost lianxi]# echo 12334455 | tr -s 345

12345

[root@localhost lianxi]# echo 12334455 | tr -s 34

123455

[root@localhost lianxi]# echo 1111111112233333333334545484 | tr -s 123

1234545484

############################################################

例:将df中连续的空格压缩成一个空格

[root@localhost lianxi]# df

文件系统 1K-块 已用 可用 已用% 挂载点

devtmpfs 485772 0 485772 0% /dev

tmpfs 497836 0 497836 0% /dev/shm

tmpfs 497836 20304 477532 5% /run

tmpfs 497836 0 497836 0% /sys/fs/cgroup

/dev/mapper/centos-root 17811456 4595472 13215984 26% /

/dev/sda1 1038336 140424 897912 14% /boot

tmpfs 99568 0 99568 0% /run/user/0

[root@localhost lianxi]# df | tr -s

文件系统 1K-块 已用 可用 已用% 挂载点

devtmpfs 485772 0 485772 0% /dev

tmpfs 497836 0 497836 0% /dev/shm

tmpfs 497836 20304 477532 5% /run

tmpfs 497836 0 497836 0% /sys/fs/cgroup

/dev/mapper/centos-root 17811456 4595472 13215984 26% /

/dev/sda1 1038336 140424 897912 14% /boot

tmpfs 99568 0 99568 0% /run/user/0

############################################################

sort命令

sort是一个排序的命令

默认按每行的第一个字符排序

根据首字母的ASCII码值进行升序(从小到大排列)

ASCII码 (美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言

-n : 按整数进行排序

-r : 递减排序

指定排序键

指定按哪一列数据进行排序

-k : 指定哪一列为排序键

############################################################

例:

[root@localhost script]# cat student_info.txt

name age sex chinese math english

cali 36 m 80 70 75

zhao 20 m 70 60 85

wang 21 m 83 87 95

zhou 20 F 85 85 89

liu 18 m 75 65 98

############################################################

-n 按整数进行排序

-k 按指定列进行排序

[root@localhost script]# cat student_info.txt | sort -k 4 -n

name age sex chinese math english

zhao 20 m 70 60 85

liu 18 m 75 65 98

cali 36 m 80 70 75

wang 21 m 83 87 95

zhou 20 F 85 85 89

-r 递减排序

[root@localhost script]# cat student_info.txt | sort -k 4 -n -r

zhou 20 F 85 85 89

wang 21 m 83 87 95

cali 36 m 80 70 75

liu 18 m 75 65 98

zhao 20 m 70 60 85

name age sex chinese math english

############################################################

指定分隔符

-t 指定分隔符 (默认是空白)

例:根据 /etc/passwd 文件里第三个字段的数值大小进行降序排列

[root@localhost script]# cat /etc/passwd | sort -rn -k 3 -t :

kimi3:x:1016:1016::/home/kimi3:/bin/bash

linhucong:x:1015:1015::/huashan:/bin/bash

kimi:x:1014:1014::/home/kimi:/bin/bash

zhaojunjie:x:1013:1013::/home/zhaojunjie:/bin/bash

wangyi:x:1012:1012::/home/wangyi:/bin/bash

zhouyiwei:x:1011:1011::/home/zhouyiwei:/bin/bash

shimengmeng:x:1010:1010::/home/shimengmeng:/bin/bash

cali123:x:1008:1008::/home/cali123:/bin/bash

califeng:x:1007:1007::/home/califeng:/bin/bash

lilanqing:x:1006:1006::/home/lilanqing:/bin/bash

yalin:x:1005:1005::/home/yalin:/bin/bash

wangshenghu:x:1004:1004::/home/wangshenghu:/bin/bash

zhangjian:x:1003:1003::/home/zhangjian:/bin/bash

zhnagjian:x:1002:1002::/home/zhnagjian:/bin/bash

chenhang:x:1001:1001::/home/chenhang:/bin/bash

xiaowang:x:1000:1000::/home/xiaowang:/bin/bash

polkitd:x:999:998:User for polkitd:/:/sbin/nologin

chrony:x:998:996::/var/lib/chrony:/sbin/nologin

nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin

kimi2:x:996:994::/home/kimi2:/bin/bash

systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

halt:x:7:0:halt:/sbin:/sbin/halt

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

sync:x:5:0:sync:/sbin:/bin/sync

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

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

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

############################################################

uniq 命令

删除经过排序后的数据的重复记录

去重 --》去除重复的数据,必须是连续的重复的行

统计重复的数据

-c 统计重复的数据

############################################################

例:

写一个脚本进行nginx 日志统计,得到访问ip最对的前10

其中 nginx的日志路径:

access.log 日志访问文件,记录了谁访问了网站,失败还是成功

/var/log/nginx/access.log

[root@localhost nginx]# cat access.log | awk '{print $1}'|uniq -c|sort -nr

18 192.168.44.130

4 192.168.44.1

统计哪个状态码最多

[root@localhost nginx]# cat access.log | awk '{print $9}' | sort|uniq -c

21 200

1 404

############################################################

cut 命令

和awk一样都是截取文本的命令

从文本文件或者文本流中提取文本列

cut -选项 提取范围 文本文件

常见选项

-c 从指定提取范围中提取字符

-f 从指定提取范围中提取字符段

提取范围:

n:第n项

n-:第n项到行尾

-m:行首到第m项

n,m:第n项和第m项--》单个的

n-m : 第n项到第m项 --》 连续的

############################################################

例:-c提取字符,下标从1开始

[root@localhost script]# echo 123456|cut -c 3

3

[root@localhost script]# echo 123456|cut -c 0

cut: 序号从1 开始计数

Try 'cut --help' for more information.

[root@localhost script]# echo 123456|cut -c 5

5

[root@localhost script]# echo adfv12fefda3 |cut -c 1,3,5

af1

############################################################

-f 提取字符段,-d 指定分隔符

[root@localhost script]# cat /etc/passwd | cut -d : -f 1,3

root:0

bin:1

daemon:2

adm:3

lp:4

sync:5

shutdown:6

halt:7

mail:8

operator:11

games:12

ftp:14

nobody:99

systemd-network:192

dbus:81

polkitd:999

sshd:74

postfix:89

chrony:998

xiaowang:1000

chenhang:1001

zhnagjian:1002

zhangjian:1003

wangshenghu:1004

yalin:1005

nginx:997

lilanqing:1006

tss:59

califeng:1007

cali123:1008

ntp:38

shimengmeng:1010

zhouyiwei:1011

wangyi:1012

zhaojunjie:1013

kimi:1014

kimi2:996

linhucong:1015

kimi3:1016



这篇关于Linux - tr命令,sort命令,uniq命令,cut命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程