命令使用
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个