正则表达式

命令使用

tr

tr:用来对标准输出的字符进行替换,压缩和删除。

-c 保留字符集1的字符,其他的用字符集2进行替换

复制代码
[root@test2 opt]# echo adc | tr -c 'ad' 'a' 
adaa[root@test2 opt]# echo adc

-d 删除字符集中的一部分

复制代码
[root@test2 opt]# echo adc | tr -c 'ad' 'a' 
adaa[root@test2 opt]# echo adc

-s 把字符集1的部分替换成字符集2的部分,连续重复出现的字符串压缩成一个字符串

复制代码
[root@test2 opt]# echo aaabbdc
aaabbdc
[root@test2 opt]# echo aaabbdc | tr -s 'a'  
abbdc
复制代码
[root@test2 opt]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@test2 opt]# echo $PATH | tr -s ':' ';'
/usr/local/sbin;/usr/local/bin;/usr/sbin;/usr/bin;/root/bin

cut

cut 快速裁剪 awk都可以换行取列

cut作用:对字段进行截取和裁剪

-d 指定分隔符(默认的分隔符是tab键)

-f 对字段进行截取,指定输出几段内容

复制代码
[root@test2 opt]# head -n 1 /etc/passwd | cut -d ':' -f 1-3
root:x:0

-complement 输出的时候排除指定的字符段

复制代码
[root@test2 opt]# head -n 1 /etc/passwd | cut -d ':' --complement -f 7
root:x:0:0:root:/root

-output-delimiter 更改输出内容的分隔符

复制代码
[root@testl ~]# head -n l /etc/passwd cut -d ":"--complement -f 2root:0:0:root:/root:/bin/bash
[root@testl ~l# head -n l /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@test1 ~]# head -n 1 /etc/passwdl cut -d ":"--complement -f 2root:0:0:root:/root:/bin/bash
[root@testl ~]# head -n 1 /etc/passwd| cut -d":"--complement -f 
7root:x:0:0:root:/root
[root@testl ~]# head -n 1 /etc/passwd | cut -d":"--complement -f 16
/bin/bash
[root@testl ~]# head -n 1 /etc/passwdl cut -d":"--complement -f 1,3
x:0:root:/root:/bin/bash
[root@test1 ~]# head -n 1 /etc/passwdl cut -d':'-f 1-5 --output-delimiter=-'@root=x=日=Q0=Qroot
rootatest1 ~]# head -n,l /etc/passwd | cut -doutputdelimiter='@rootaxa0a0aroot

-b 以字节为单位进行截取

-c 以字符为单位进行截取

文件拆分

split 大文件拆分成若干个小的文件

-l 按行来进行分割

复制代码
[root@test2 opt]# cp /etc/passwd /opt/test3.txt
[root@test2 opt]# split -l 20 /opt/test3.txt xy102
[root@test2 opt]# ll
总用量 24
-rw-r--r--. 1 root root    0 6月  19 14:53 1
-rw-r--r--. 1 root root  409 6月  19 16:28 test1.sh
-rw-r--r--. 1 root root   61 6月  19 15:17 test2.sh
-rw-r--r--. 1 root root 2649 6月  20 09:36 test3.txt
-rw-r--r--. 1 root root  951 6月  20 09:38 xy102aa
-rw-r--r--. 1 root root 1153 6月  20 09:38 xy102ab
-rw-r--r--. 1 root root  545 6月  20 09:38 xy102ac
[root@test2 opt]# ls
1  test1.sh  test2.sh  test3.txt  xy102aa  xy102ab  xy102ac

-b 按照大小进行分割

面试题

现在有一个日志文件,很大,有5个G,第一个能不能快速的打开?

拆分:-l 按行拆分 -b 按大小拆分

这种文件推荐使用按大小拆分。

文件合并

cat

paste

面试题

cat合并和paste合并之间的区别是什么?

cat是上下合并

复制代码
[root@test2 opt]# cat test1.txt test2.txt 
 111
 222
 333
aaa
bbb
ccc

paste是左右合并

复制代码
[root@test2 opt]# paste test1.txt test2.txt 
 111    aaa
 222    bbb
 333    ccc

面试题

统计当前主机的连接状态

复制代码
[root@test2 opt]# ss -antp | grep -v '^State' | cut -d " " -f 1 | sort | uniq -c
      3 ESTAB
     17 LISTEN

正则表达式

由一类特殊字符以及文本字符所编写的一个模式,模式又来匹配文件当中的内容(字符)。

校验我们输入的内容是否满足规定,格式,长度等要求。

只要用来匹配文本内容,命令结果。

通配符:只能用于匹配文件名和目录名,不能匹配文件的内容和命令的结果

正则表达式两种

基本正则表达式

元字符(字符匹配)

. 任意单个字符,也可以是一个汉字

\ 转义符 恢复其本意

匹配指定范围内的任意单个字符或者数字

\^ 取反

^# 以#

^$ 表示空行

表示次数,匹配字符出现的次数

*****匹配前面的字符任意此,0次也可以。贪婪模式尽可能的匹配。

.*****匹配前面任意字符,至少要有一次

\? 匹配前面的字符0此或者1次,可有可无。

\ +匹配前面字符,至少要出现一次>=1

\ {N\}匹配前面的字符至少=n次,可以小于不能大于

\{m\n\} 匹配前面至少m个最多n个(连续出现)

\{,n\}匹配前面最多n个

位置锚定

^:以什么开头 行首锚定

$:以什么结尾 行尾锚定

\<或者\b 词首锚定 用于匹配单词的左侧

\>或者\b 词尾锚定 用于匹配单词的右侧

复制代码
[root@test2 opt]# cat test1.txt | grep "\broot\b"
root
匹配整个单词,一行内只能有他
[root@test2 opt]# cat test1.txt | grep -n "^root$"
6:root
"\broot\b"  匹配整个单词空格隔开也算一个单词
"^root$"   整个一行只有这一个单词
复制代码
[root@test2 opt]# cat -n test1.txt | grep "root"
     4  rootroot
     5  rootrootrootroot
     6  root
[root@test2 opt]# cat test1.txt | grep -n "^root$"
6:root

分组和逻辑关系

分组 ()

复制代码
[root@test2 opt]# echo abcabc | grep "\(ab\)\{1\}" 
abcabc

或者 \

复制代码
[root@test2 opt]# echo 1abc2abc | grep "\(1\|2\)abc" 
1abc2abc
​
扩展正则表达式

grep -E

egrep

? 匹配前面的字符0此或者1次,可有可无。

+匹配前面字符,至少要出现一次>=1

{N}匹配前面的字符至少=n次,可以小于不能大于

{mn }匹配前面至少m个最多n个(连续出现)

{,n}匹配前面最多n个

相关推荐
ccino .1 分钟前
Docker 容器删除卡在 Removal In Progress / Dead 解决
服务器·安全·web安全·网络安全
K成长日志3 分钟前
DALI-2协议简介
网络·网络协议·智能楼宇·智能照明·智能建筑·dali
羑悻的小杀马特6 分钟前
从写 YAML 到集群自愈:KES-Operator 把 KES 集群接进 Kubernetes 原生体系
运维·数据库·容器·kubernetes
bksczm10 分钟前
MySQL基础篇之事务
linux·数据库·sql·mysql
李白客11 分钟前
数据库管理工具怎么选?Navicat、DataGrip、DBeaver 六维横向对比与选型建议
运维·数据库
Ivanqhz14 分钟前
BPE(Byte Pair Encoding) 算法
java·服务器·网络·深度学习·神经网络
iPad协议个微协议14 分钟前
微信二次开发如何用 WechatApi 打通消息、客户和业务系统
运维·微信·自动化·微信开发·wechatapi·个人微信开发
蓝速科技14 分钟前
蓝速 K10 三防平板在工业恶劣工况下的选型与应用指南
大数据·运维·数据库·人工智能·科技
bksczm16 分钟前
MySQL基础篇之视图与用户管理
linux·数据库·sql·mysql
Ahtacca29 分钟前
Linux 基础实验:从终端操作到 C 语言编译
linux·运维·运维开发·虚拟机