tr、cut、split、grep -E

目录

tr命令:替换和删除

cut命令:快速裁剪

split命令:文件拆分

文件合并

面试题

1.现在有一个日志文件,有5个G,能不能快速的打开

2.cat合并和paste合并之间的区别?

3.统计当前主机的连接状态:

grep -E 正则表达式

1.使用正则表达式把下列邮箱全部匹配出来

2.匹配下列电话

3.显示/etc/passwd中以sh结尾的行

4.查找/etc/inittab中含有“以s开头,并以d结尾的单词”模式的行

5.查找ifconfig命令结果中的1-255之间的整数

6.在/etc/passwd中取出默认shell为bash的行

7.高亮显示passwd文件中冒号,及其两侧的字符


tr命令:替换和删除

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

格式 :tr 选项 参数

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

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

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

sed比tr功能更强,常用于正则表达式

echo abc | tr -c 'ab' 'e'
abee
echo abcd | tr -c 'ab' 'e'
abeee
echo abcd | tr -d 'ab'
cd
echo aaabbb | tr -s 'a'
abbb
echo ababab | tr -s 'b'
ababab		#非连续出现的字符无法进行压缩
echo ababab | tr -s 'ab'
ababab		#这种压缩字符只对单个字符有效,对字符串无效
echo ababab | tr -s 'a' 'c'
cbcbcb


cut命令:快速裁剪

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

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

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

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

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

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

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

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

head -n1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
head -n1 /etc/passwd | cut -d ':' -f 1-4
root:x:0:0
head -n1 /etc/passwd | cut -d ':' -f 1,6
root:/root
head -n1 /etc/passwd | cut -d ':' --complement -f 2-4
root:root:/root:/bin/bash
head -n1 /etc/passwd | cut -d ':' -f 1-4 --output-delimiter='@'
root@x@0@0
split命令:文件拆分

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

split -l 按行来进行分割

split -b 按大小进行分割

ls
test.txt
split -l 20 test.txt ykw
#格式:-l 指定行数 要分割的文件 分割后的文件的前缀名
ls
test.txt  ykwaa  ykwab  ykwac
#分割后的文件 以指定的ykw为开头,排列方式后跟 aa ab ac ... az ba ... bz ...
文件合并

cat合并和paste合并

cat是上下合并;paste是左右合并

面试题
1.现在有一个日志文件,有5个G,能不能快速的打开

可以使用split进行拆分,split -l 按行拆分 split -b 按大小拆分,我推荐使用split -b 按大小拆分

2.cat合并和paste合并之间的区别?

cat是上下合并

paste是左右合并

3.统计当前主机的连接状态:

ss -antp | grep -v '^State' | cut -d " " -f 1 | sort | uniq -c 

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

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

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

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

grep -E 正则表达式

正则表达式:

基本正则表达式

元字符(字符匹配)

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

\ 是转义符 表示恢复其本意

[ ] 匹配指定范围内的任意单个字符和数字

[^] 就是取反

^$ 匹配空行

^ 内容   表示以什么为开头

匹配字符出现的次数:

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

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

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

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

\{n\} 匹配前面的字符=n次,可以小于n,但是不能大于n,而且前面的字符必须要连续出现

\{m,n\}  匹配前面的字符至少m次,最多n次,必须是连接出现,超出的不在匹配范围

\{,n\}  匹配前面的字符最多N次

\{n,\}  匹配前面的字符最少N次

位置锚定

^ : 以什么为开头 (行首锚定)

$:以什么为结尾 (行尾锚定)

\<或者\b   词首锚定,匹配单词的左侧(连续的数字,字母,下划线都算单词内部)

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

^root$  整个一行只有这个单词

\broot\b 匹配整个单词   空格隔开也算整个单词

分组和逻辑关系

分组:    ( )

或者:  \ |

扩展正则表达式

1.使用正则表达式把下列邮箱全部匹配出来

vim d.txt
cicifireway@126.com
544564317@qq.com
CICIfireway@12a.com
aabbcc5566@163.com
cat d.txt | grep -E '[a-zA-Z0-9]+@[a-z0-9]+\.[com]+'

2.匹配下列电话

vim e.txt
cicifireway@126.com
544564317@qq.com
CICIfireway@12a.com
aabbcc5566@163.com

cat e,txt | grep -E '[a-zA-Z0-9]+@[a-z0-9]+\.[com]+'

3.显示/etc/passwd中以sh结尾的行

cat /etc/passwd | egrep 'sh$'

4.查找/etc/inittab中含有“以s开头,并以d结尾的单词”模式的行

cat /etc/inittab | egrep '\<s[a-zA-Z]*d\>'

5.查找ifconfig命令结果中的1-255之间的整数

ifconfig | egrep '\b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b'

6.在/etc/passwd中取出默认shell为bash的行

cat /etc/passwd | egrep 'bash$'
7.高亮显示passwd文件中冒号,及其两侧的字符
cat /etc/passwd | egrep '.?:{1,}.?'

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值