6、字符处理命令

6字符处理命令

6字符处理命令 1

1. 文本处理命令 2

1.1. shift 2

1.2. exec 2

1.3. 字符串操作 3

1.4. 排序命令sort(TK) 6

1.5. uniq 9

1.6. tr 10

1.7. xagrs将字符结果转化为参数传递给后面命令,通常与管道连用 13

1.8. rev将内容镜像输出 15

1.9. wc 15

1.10. cut命令(敌法) 16

1.11. factor 分解出数的所有因数(除了1和本身) 19

2. 文件处理 19

2.1. tee 19

2.2. 合并文件join 19

2.3. paste合并文件 21

2.4. split切割文件 24

2.5. diff 和vimdiff比较两个文件不同 26

2.6. 取路径中的目录和文件 27

文本处理命令

shift

6、字符处理命令

将位置参数变量向前移动(默认一位)

exec

在当前shell下执行指定命令,然后退出shell

find ./ -maxdepth 1 -name '*.txt' ! -name '.*' -exec -rm -rf {} \;删除当前目录下深度为1(不包括其下的子目录)和隐藏目录,名字为.txt结尾的文件

6、字符处理命令

字符串操作

求变量长度

echo $PATH | wc -L

#搭配大括号

6、字符处理命令

expr length $name

6、字符处理命令

awk中的length函数

6、字符处理命令

求字符长度

expr length 字符(字节长度)

6、字符处理命令

6、字符处理命令

wc -L 求字符字节长度

6、字符处理命令

awk

对变量字符串进行截取

格式:${字符串:开始截取的索引:截取长度}

":" 截取

从第四位开始截取(因为第一位是0)

6、字符处理命令

从第四位开始截取,向后截取3位

6、字符处理命令

删除

#(#)字符 *字符 删除

6、字符处理命令

正向匹配${name#(#)A*c}一个#属于不贪婪匹配,两个#属于贪婪匹配,尽可能多匹配的删除
%(%)字符*字符 删除

6、字符处理命令

反向匹配用%,从尾部匹配,%%贪婪 %不贪婪

字符替换

/(/)字符/字符 替换

6、字符处理命令

同理,//位贪婪匹配,/为不贪婪匹配

排序命令sort(TK)

格式: sort [选项] 文件名

6、字符处理命令

选项

-n 以数值进行排序(不加-n默认为字符串型)

以第三行UID进行排序

6、字符处理命令

-t 指定分隔符,默认是分隔符是制表符或空格

-k 选项指定字段号

基本用法

6、字符处理命令

指定分隔符
若想按照第二段排序

6、字符处理命令

6、字符处理命令

sort -t ":" -k 2,2 -k 3,3 /etc/passwd 指定“:”为分隔符,按照第2列排序,之后再排序第三列
例子

6、字符处理命令

-k 3.1代表以第三个字段第一个字符进行排序

-r 反向排序

-u (unique) 取消重复

-f 忽略大小写

uniq

去除相邻的重复行

配合sort使用

6、字符处理命令

-c 统计重复行出现的次数

6、字符处理命令

tr

替换字符串

基本格式echo'字符串 ' | tr '要被替换的字符串' '替换成的字符串'

若没有依次单独指定的字符,当排序到最后会重复替换最后指定的那个字符,但是如果多分配替换的字符,如果前面都被替换,则不继续替换

6、字符处理命令

将所有小写字母替换成大写字母

6、字符处理命令

可以错位进行排序,可以指定范围

6、字符处理命令

将abcde 改成12345

6、字符处理命令

-d删除字符串并显示

6、字符处理命令

可以直接对文件进行操作,需要加于重定向输入符号

6、字符处理命令

-s 去除相邻的重复字符

6、字符处理命令

常用于去掉多余的空格

6、字符处理命令

-c 排除

排除替换

6、字符处理命令

除了数字以外都替换成*

xagrs将字符结果转化为参数传递给后面命令,通常与管道连用

可以传递的命令(删除为例)

find ./ -name a.txt -exec rm -rf {} \;

rm -rf $(find ./ -name a.txt)

find ./ -name "a.txt" | xagrs rm -rf (通过管道的方法)

复杂的处理(管道符后出现2个或者多个参数)-i 以大括号来接受传递的结果

find ./-name "*.txt" | xargs -i mv {} bak

6、字符处理命令

xargs拼接字段 -n 以空格分隔形式连接n个字段为一行

先统计所有字段,再根据数字换行分配

6、字符处理命令

也可以配合tr使用

6、字符处理命令

xargs -d "符号" 将符号变成空格

6、字符处理命令

便于将所有内容显示在第一行

6、字符处理命令

rev将内容镜像输出

6、字符处理命令

wc

-l 统计行号

-L 统计长度

-w 统计单词数

-m 统计字符数

-c 字节数

cut命令(敌法)

例子:

中间分隔符必须用tab键(制表符)来分割,空格不可以当作默认分隔符

6、字符处理命令

-d 指定以什么为分隔符

6、字符处理命令

截取所有普通用户的用户名

6、字符处理命令

cut 是无法截取以空格为分隔符的内容,比如说df -Th中的内容无法直接提取

-f 指定提取列

提取第二列

6、字符处理命令

不看第一行并提取第二列和第四列

6、字符处理命令

其他两种切割方式

-b 按照字节进行切割

6、字符处理命令

当涉及中文时,按照字节和按照字符分割可以看出区别

6、字符处理命令

-c 字符范围,以第一行为标准,n-m表示从第n个字符到第m个字符

截取第7-14列的所有字符

6、字符处理命令

截取第四个字符之后所有字符

6、字符处理命令

这里面第几个字符要算上空格或者tab键

factor 分解出数的所有因数(除了1和本身)

6、字符处理命令

文件处理

tee

双重重定向,辅助生成日志文件,产生两份文件,默认覆盖

6、字符处理命令

-a 追加

合并文件join

6、字符处理命令

默认合并相同字段,其他内容向后排列合并

行数不能发生错乱会报错,以某列正常以空格分割字段

如果想要将文件上下合并输出,只需要cat

6、字符处理命令

paste合并文件

直接横向合并

6、字符处理命令

选项 -d “”指定连接符号(默认空格连接)

6、字符处理命令

-s 将多行以一行输出

-s 只读一行 -d 指定分隔符先=后换行,写一个字符就计算一个分隔符

6、字符处理命令

6、字符处理命令

上图分别代表以=为连接符,1、先读2行再换行 2、先读三行再换行 4、先读四行再换行(有几个“-”为每行有几个字段)

全部指定分隔符(包括换行)行合并

6、字符处理命令

6、字符处理命令

-d 合并行paste -d ‘=’- - <a.txt

6、字符处理命令

有几行写几个“-”,少了s,多加了一个输入重定向

和-sd的区别和相似

6、字符处理命令

6、字符处理命令

split切割文件

-l 指定行数进行切割

6、字符处理命令

-b 以字节进行切割

6、字符处理命令

-d 指定数字后缀为(默认为01、02······)

6、字符处理命令

-a指定后缀位数

6、字符处理命令

在参数后面写想要的名字

6、字符处理命令

若想恢复可以用cat合并

diff 和vimdiff比较两个文件不同

vimdiff(要退出两次)

6、字符处理命令

diff

6、字符处理命令

取路径中的目录和文件

dirname 取路径中的目录部分

$(dirname $0)

basename 取路径中文件名

$(basename $0)

6、字符处理命令

rename 批量修改文件名

格式:rename 要被替换的字符串 换成什么样的字符串 被替换的文件名(支持通配符)

6、字符处理命令

例题:把当前目录(包含子目录)下所有后缀为“.sh”的文件后缀变更为“.shell”

find ./ -name “*.sh” -exec rename .sh .shell {} \;

6、字符处理命令

当然 find ./ -name "*.shell" | xargs rename .shell .sh {} 和 rename .shell .sh $(find ./ -name "*.shell") 都可以处理,注意包含子目录用find ./

发布者:LJH,转发请注明出处:https://www.ljh.cool/35184.html

(0)
上一篇 2023年4月5日 下午10:45
下一篇 2023年4月5日 下午10:51

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注