4.1 tr命令的一般使用
示例1:
[root@yuji ~]# echo abc | tr 'a-z' 'A-Z' //将所有小写字母替换为大写 ABC [root@yuji ~]# echo abc | tr 'a' 'A' //将小写a替换为大写A Abc [root@yuji ~]# echo abc | tr -t 'a' 'A' //将小写a替换为大写A Abc [root@yuji ~]# echo "192.168.80.10" | tr '.' ' ' //将.替换为空格 192 168 80 10 复制代码
网络异常,图片无法展示
|
示例2:
[root@yuji ~]# echo abc| tr "abc" "123" 123 [root@yuji ~]# echo abc| tr "ab" "123" 12c [root@yuji ~]# echo abc| tr "abc" "12" 122 复制代码
网络异常,图片无法展示
|
示例3:
-c,保留字符集1的字符,其他字符包括换行符\n用字符集2替换。
[root@yuji ~]# echo -e "abc\ncba\nab" abc cba ab [root@yuji ~]# echo -e "abc\ncba\nab" | tr -c "ab" "0" ab000ba0ab0[root@yuji ~]# [root@yuji ~]# echo -e "abc\ncba\nab" | tr -c "ab\n" "0" ab0 0ba ab 复制代码
网络异常,图片无法展示
|
示例4:
-d,删除所有属于字符集1的字符。
[root@yuji ~]# echo "hello world" hello world [root@yuji ~]# echo "hello world" | tr -d " " helloworld [root@yuji ~]# echo "hello world" | tr -d "lo" he wrd 复制代码
网络异常,图片无法展示
|
示例5:
-s,将连续重复的字符串压缩成一个。
[root@yuji ~]# echo "hhhi woooorld" hhhi woooorld [root@yuji ~]# echo "hhhi woooorld" | tr -s "h" hi woooorld [root@yuji ~]# echo "hhhi woooorld" | tr -s "ho" hi world [root@yuji ~]# echo "hhhi woooorld" | tr -s "ho" "z" zi wzrld 复制代码
网络异常,图片无法展示
|
示例6:生成12位随机码
tr -dc "字符集1":符合字符集1的部分不做处理,其他字符进行删除。
[root@yuji ~]# cat /dev/urandom | tr -dc '[:alnum:]' | head -c12 RvKGD5mNqOJz[root@yuji ~]# #/dev/urandom //非阻塞的随机数产生器,它会重复使用熵池中的数据以产生伪随机数据 #tr -dc '[:alnum:]' //保留数字和英文字母,其他字符全都删除 #head -c12 //显示前12个字符 复制代码
网络异常,图片无法展示
|
4.2 分行输出环境变量PATH中包含的所有目录
使用tr命令,将冒号(":")替换为换行符("\n")
[root@yuji ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@yuji ~]# echo $PATH | tr ":" "\n" /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /root/bin 复制代码
网络异常,图片无法展示
|
4.3 过滤出文件中的非空行
方法1、使用tr命令删除文件中的空行(即压缩换行符)
方法2、使用grep命令过滤非空行。
[root@yuji ~]# cat 4.txt 11 22 33 [root@yuji ~]# cat 4.txt| tr -s "\n" //将连续的换行符压缩成一个 11 22 33 [root@yuji ~]# cat 4.txt| grep -v "^$" //过滤出非空行 11 22 33 复制代码
网络异常,图片无法展示
|
5、cut命令——截取字段或字符串
用于显示行中的指定部分,删除文件中指定字段。
命令格式:
cut [选项] 参数 cat file | cut [选项] 参数 复制代码
常用选项:
选项 | 作用 |
-d | 指定分隔符(默认分隔符为Tab) |
-f n | 按字段进行截取。指定第n个字段;1-3表示从第1个字段到第3个字段;1,4,7表示第1、第4、第7个字段 |
-b | 以字节为单位进行截取 |
-c | 以字符为单位进行截取 |
–complement | 排除所指定的字段 |
–output-delimiter | 更改输出内容的分隔符 |
示例:
1)-d 指定分隔符,-f 按字段进行截取。
网络异常,图片无法展示
|
2)-f,连续的字段使用"-"连接,不连续的字段之间使用逗号。
网络异常,图片无法展示
|
3)–complement,排除所指定的字段。
网络异常,图片无法展示
|
4)–output-delimiter,更改输出内容的分隔符。
网络异常,图片无法展示
|
截取字符串的常用方法:
常用的三种方法:
1.${i:起始下标值:截取长度} #i是变量,字符的下标值从0开始。例如 ${i:0:2} 2.echo $i | cut -c 1-3 #-c表示按字符截取,字符下标值从1开始,起始位置-终止位置。1是起始位置,3是终止位置。 3.expr substr $i 1 3 #下标值从1开始。1代表起始位置,3代表截取的字符长度。 复制代码
示例:
i=123456789,要求截取3456。
[root@yuji ~]# i=123456789 [root@yuji ~]# echo ${i:2:4} //从下标值为2的字符开始截取,共截取4个字符 3456 [root@yuji ~]# echo $i | cut -c 3-6 //截取第3到第6个字符 3456 [root@yuji ~]# expr substr $i 3 4 //从第3个字符开始截取,共截取4个字符 3456 复制代码
网络异常,图片无法展示
|
网络异常,图片无法展示
|
6、split命令——拆分文件
split命令用于在Linux下将大文件拆分为若干小文件。
语法格式:
split 选项 参数 原始文件 拆分后文件名前缀 复制代码
常用选项:
选项 | 作用 |
-l | 指定行数 |
-b | 指定大小 |
示例:
以3行对文件进行拆分,最后一个文件的行数如果没有3行,则以实际行数进行分配。
[root@yuji tt]# cat num.txt 1 2 3 4 5 6 7 8 9 10 [root@yuji tt]# split -l 3 num.txt num //以3行对文件进行拆分 [root@yuji tt]# ls numaa numab numac numad num.txt [root@yuji tt]# cat numaa 1 2 3 [root@yuji tt]# cat numab 4 5 6 [root@yuji tt]# cat numac 7 8 9 [root@yuji tt]# cat numad //最后一个文件的行数如果没有3行,则以实际行数进行分配 10 复制代码
网络异常,图片无法展示
|
网络异常,图片无法展示
|
7、eval命令——扫描命令2次
命令字前加上eval,shell会在执行命令之前扫描它两次,eval命令首先会先扫描命令行进行所有的置换,然后再执行命令,该命令适用于那些一次扫描无法实现功能的变量,该命令会对变量进行两次扫描。
示例1:
[root@yuji ~]# echo "hello world">file [root@yuji ~]# cat file hello world [root@yuji ~]# myfile="cat file" [root@yuji ~]# echo $myfile //输出变量myfile的值 cat file [root@yuji ~]# eval $myfile //扫描命令2次,先将myfile置换成"cat file",之后执行"cat file" hello world 复制代码
网络异常,图片无法展示
|
示例2:
[root@yuji ~]# cat demo.sh #!/bin/bash eval echo $$# //先将$$#置换成$5(即\$置换成$,$#置换成参数个数5),之后执行“echo $5”,即输出第5个位置参数的值 [root@yuji ~]# bash demo.sh 1 2 3 4 5 5 复制代码
网络异常,图片无法展示
|
示例3:
[root@yuji ~]# a=100 [root@yuji ~]# b=a [root@yuji ~]# eval echo $$b //先将$$b置换成$a(即\$置换成$,$b置换成a),之后执行echo $a 100 [root@yuji ~]# eval $b=50 [root@yuji ~]# echo $a 50 复制代码
网络异常,图片无法展示
|