阿凝 发表于 2023-4-25 20:46:05

快速上手Linux核心命令(五):文本处理三剑客

@
目录

[*]前言
[*]正则表达式
[*]第一剑客 grep
[*]第二剑客 sed
[*]第三 剑客 awk
[*]小结

剑仙镇楼~ O(∩_∩)O

前言

上一篇中已经预告,我们这篇主要说Linux文本处理三剑客。他们分别是grep、sed、awk 。既然能被业界称为三剑客,可见其在Linux命令中占有举足轻重得地位。所以呢,这里也专门写一篇文章说一说其用法。

正则表达式

三剑客一般会配合着正则表达式一起使用,为了更好的掌握三剑客,这里简单介绍下正则表达式的使用。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成。在搜索文本时,与要搜索的字符串进行匹配
举个栗子
*.txt   # 表示任意以.txt结尾的文件这里就不列出所有的了,我们只把常用的拿出来
1、特殊字符
注:如果需要匹配一下字符,需要在字符前加\进行转义
特殊字符特殊字符说明例子\(**    | 匹配字符串的结尾位置                                  | **x\)匹配以"x"结尾的字符串^匹配字符串的开头位置^abc 匹配以"abc"开头的字符串.匹配任意一个字符,除了换行符外*****匹配前面的0次或多次的子表达式+匹配前面字符有 1 个或多个.*匹配任意一个字符有 0 个或多个,也就是能匹配任意的字符{}匹配前面字符的数量范围{2}表示重复两次,{2,}表示至少重复两次,{2-4} 重复2-4次[]括号中可以包含表示字符集的表达式[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cgsing2y-1650173645257)(快速上手Linux核心命令(五):文本处理三剑客/1649470939258a-z-1649470958893.png)]2、非打印字符
字符字符说明\f匹配一个换页符\n匹配一个换行符\r匹配一个回车符\t匹配一个制表符\s配任何空白字符,包括空格、制表符、换页符\S匹配任何非空白字符第一剑客 grep

1、简介
grep:文本过滤工具。 用于查找文件里符合条件的字符串,一般配合正则表达式一起使用。
grep 只支持匹配而不能替换匹配的内容,替换的功能可以由 sed 来完成。
2、语法格式
grep [参数选项] [匹配模式][查找得文件]上面说的匹配模式就是你需要找得东西,可以是普通文字符号,也可以是正则表达式。
3、参数说明
参数参数说明-A除了显示匹配内容行之外,还显示该行之后的N行-B除了显示匹配内容行之外,还显示该行之前的N行-C除了显示匹配内容行之外,还显示该行之前后的N行-c统计匹配的行数-e实现多个选项间的逻辑 or 关系-E支持扩展的正则表达式-i忽略大小写-n显示匹配行和行号-o仅显示匹配到的字符串-q不输出任何信息,脚本中常用-v显示不被匹配到的行或者说排除某些行-w显示匹配整个单词--color为grep过滤的匹配字符串添加颜色,以突出显示4、实践操作
后面的示例都是以操作下面文本为例
# 下面是我们演示所使用的文本文件
# cat xiezhr.txt
90后,毕业于某不知名本科院校,通信工程专业
目前从事IT类工作,工作生活于春城昆明
天天被各种奇葩业务折腾得死去活来,但依然保有对各项技术热忱得追求和美好生活得向往
个人公众号:XiezhrSpace
个人博客:www.xiezhrspace.cn
个人微信号:xie_zhr
把分享变成一种习惯,再小的帆也能远航
头像连接:https://gitee.com/xiezhr/image-learn-bed/raw/master/image/avatar.jpg
欢迎您的关注!① 把包含字符串xiezhr的行过滤出来
# grep "xiezhr" xiezhr.txt
个人博客:www.xiezhrspace.cn
头像连接:https://gitee.com/xiezhr/image-learn-bed/raw/master/image/avatar.jpg② 把以“个人”开头的行过滤出来或者把cn结尾的行过滤出来
# grep "^个人" xiezhr.txt
个人公众号:XiezhrSpace
个人博客:www.xiezhrspace.cn
个人微信号:xie_zhr

# grep "cn$" xiezhr.txt
个人博客:www.xiezhrspace.cn③把匹配xie_zhr 的行及后边的两行显示出来
# grep -A2 "xie_zhr" xiezhr.txt
个人微信号:xie_zhr
把分享变成一种习惯,再小的帆也能远航
头像连接:https://gitee.com/xiezhr/image-learn-bed/raw/master/image/avatar.jpg④把匹配xie_zhr 的行及前边的两行显示出来
# grep -B2 "xie_zhr" xiezhr.txt
个人公众号:XiezhrSpace
个人博客:www.xiezhrspace.cn
个人微信号:xie_zhr⑤把匹配xie_zhr 的行及前后的两行显示出来
# grep -C2 "xie_zhr" xiezhr.txt
个人公众号:XiezhrSpace
个人博客:www.xiezhrspace.cn
个人微信号:xie_zhr
把分享变成一种习惯,再小的帆也能远航
头像连接:https://gitee.com/xiezhr/image-learn-bed/raw/master/image/avatar.jpg⑥ 过滤某个关键字,并显示行号
# grep -n "xie_zhr" xiezhr.txt
6:个人微信号:xie_zhr⑦过滤不包含某关键词,并输出行号
# grep -n -v "xie_zhr" xiezhr.txt
1:90后,毕业于某不知名本科院校,通信工程专业
2:目前从事IT类工作,工作生活于春城昆明
3:天天被各种奇葩业务折腾得死去活来,但依然保有对各项技术热忱得追求和美好生活得向往
4:个人公众号:XiezhrSpace
5:个人博客:www.xiezhrspace.cn
7:把分享变成一种习惯,再小的帆也能远航
8:头像连接:https://gitee.com/xiezhr/image-learn-bed/raw/master/image/avatar.jpg
9:欢迎您的关注!⑧删除掉空行、和注释行

[*]"|" 表示或
[*]“^$” 表示空行
[*]“#”表示注释符号
# grep -Ev "^$|#" xiezhr.txt⑨ 同时过滤多个不同字符串,并为过滤的内容添加颜色突出显示
# grep -e "xie" -e "cn" --color=auto xiezhr.txt
个人博客:www.xiezhrspace.cn
个人微信号:xie_zhr
头像连接:https://gitee.com/xiezhr/image-learn-bed/raw/master/image/avatar.jpg
## 上面等同于
# grep -E "xie|cn"--color=auto xiezhr.txt
个人博客:www.xiezhrspace.cn
个人微信号:xie_zhr
头像连接:https://gitee.com/xiezhr/image-learn-bed/raw/master/image/avatar.jpg⑩ 过滤字符串xiezhr 不区分大小写
# grep -i "xiezhr" xiezhr.txt
个人公众号:XiezhrSpace
个人博客:www.xiezhrspace.cn
头像连接:https://gitee.com/xiezhr/image-learn-bed/raw/master/image/avatar.jpg⑪ 计算匹配字符串的数量
# grep -c "xie" xiezhr.txt
3第二剑客 sed

1、简介
sed 是 stream editor 的缩写,简称流编辑器。
是操作、转换和过滤文本内容的强大工具。可以快速对文本进行增删改查,过滤(过滤指定字符串)、取行(取出指定行)是查询功能中最常用的。
2、语法格式
sed [参数选项] [输入文件]

[*]sed内置命令字符:可以是单个命令,也可以是多个命令参数的组合
[*]输入文件:sed需要处理的文件,可选项,sed还可以从标准输入(如管道)中获取输入
3、工作原理
为了更好理解sed,这里说一说sed工作模式
Sed是从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行,直到最后一行。每当处理一行时,把当前处理的行存储在临时缓冲区中,称为模式空间(Pattern Space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pF5tKJm0-1650173645258)(快速上手Linux核心命令(五):文本处理三剑客/16493443873561649344386938-1649344431717.png)]
4、参数说明
命令参数
参数参数说明-n取消默认的sed输出,常与sed内置命令p连用-i直接修改文件内容,而不是输出到终端。如果不使用-i参数,sed只是修改内存中的内容,不会影响磁盘上的实际文件常用内置命令字符
解释说明sed内置命令字符aappend,表示追加文本,在指定行后添加一行或多行文本ddelete,表示删除匹配行文本iinsert,表示插入文本,在指定行前添加一行或多行文本pprint,表示打印匹配行的内容,通常与-n参数一起使用s/regexp/replacestrreplace ,表示可以用replacestr(可以是特殊字符&、$等)字符串,替换正则表达式regexp所匹配的内容4、实践操作
这个是我们要操作的文本哈
# cat file.txt
blog:www.xiezhrspace.cn
email:1666397814@qq.com
QQ:2544458199
img:/xiezhr.png
age:18
professional:Software engineer① 替换子命令s
基本用法
# 1.将文本中"xiezhrspace"字符串替换成“xiezhr”
# sed 's/xiezhrspace/xiezhr/' file.txt
blog:www.xiezhr.cn
email:1666397814@qq.com
QQ:2544458199
img:/xiezhr.png
age:18
professional:Software engineer
# 2 在每行行首加上“#”
# sed 's/^/#/g' file.txt
#blog:www.xiezhrspace.cn
#email:1666397814@qq.com
#QQ:2544458199
#img:/xiezhr.png
#age:18
#professional:Software engineer

# 3.在每行行尾加上“*”
# sed 's/$/ */g' file.txt
blog:www.xiezhrspace.cn*
email:1666397814@qq.com *
QQ:2544458199 *
img:/xiezhr.png *
age:18 *
professional:Software engineer *带正则表达式的使用
# 将所有的数字替换成“*”
# sed 's//*/g' file.txt
blog:www.xiezhrspace.cn
email:**********@qq.com
QQ:**********
img:/xiezhr.png
age:**
professional:Software engineer多个匹配
# 将1-3行 1替换成2;3到结尾行数字替换成“*”
# sed '1,3s/1/2/g; 3,$s//*/g' file.txt
blog:www.xiezhrspace.cn
email:2666397824@qq.com
QQ:**********
img:/xiezhr.png
age:**
professional:Software engineer其他用法
# 将替换后的内容写入到新的文件中
# sed 's/QQ/qq/w file1.txt' file.txt
blog:www.xiezhrspace.cn
email:1666397814@qq.com
qq:2544458199
img:/xiezhr.png
age:18
professional:Software engineer
# cat file1.txt
qq:2544458199**注意: sed 修改匹配到的内容后,默认行为是不保存到原文件,直接输出修改后模式空间的内容,如果要修改原文件需要指定 -i 选项 **
② 追加行子命令a
# 1.将所有行下面都追加“-----------------------------------”
# sed 'a -----------------------------------' file.txt
blog:www.xiezhrspace.cn
-----------------------------------
email:1666397814@qq.com
-----------------------------------
QQ:2544458199
-----------------------------------
img:/xiezhr.png
-----------------------------------
age:18
-----------------------------------
professional:Software engineer
-----------------------------------

# 2.将1-2 行后面追加一行“************************************”
# sed '1,2a ******************************' file.txt
blog:www.xiezhrspace.cn
******************************
email:1666397814@qq.com
******************************
QQ:2544458199
img:/xiezhr.png
age:18
professional:Software engineer③ 插入行子命令i
# 在1-2行前面插入一行“******************************”
# sed '1,2i ******************************' file.txt
******************************
blog:www.xiezhrspace.cn
******************************
email:1666397814@qq.com
QQ:2544458199
img:/xiezhr.png
age:18
professional:Software engineer④ 删除行子命令d
#1.将文中1-2行删除
# sed '1,2d' file.txt
QQ:2544458199
img:/xiezhr.png
age:18
professional:Software engineer
#2.删除文件中所有的数字
# sed 's///g' file.txt
blog:www.xiezhrspace.cn
email:@qq.com
QQ:
img:/xiezhr.png
age:
professional:Software engineer
# 3.删除所有空白行
# sed '/^$/d' file.txt
blog:www.xiezhrspace.cn
email:1666397814@qq.com
QQ:2544458199
img:/xiezhr.png
age:18
professional:Software engineer⑥ 打印指定行子命令
# 打印file 第二行内容(这里如果不加参数“-n”的话,打印出来的不仅仅是第二行,这个是为什么呢? 这是因为sed有个默认输出功能,我们需要把默认输出取消掉,所以带上了-n参数)
# -n p 可以理解为一队cp,p出现了一般都会用-n参数
# sed -n '2p' file.txt
email:1666397814@qq.com
# 打印2-3行内容
# sed -n '2,3p' file.txt
email:1666397814@qq.com
QQ:2544458199第三 剑客 awk

1、简介
awk 是Linux中最强大的工具,没有之一哈(●'◡'●)。本来不想说的,怕吓到你。其实awk 还是一种编程语言哦。
awk可以用来处理数据和生成报告,处理的数据可以是一个或多个文件。
那么,awk具体能干些啥呢?
序号功能1能够将给定的文本内容,按照我们期望的格式输出,打印成报表2分析系统日志,快速分析挖掘出我们关心的数据,并生成统计信息3很方便的统计数据,常用于网站访问量、访问IP统计等4参与数组计算与去重5显示出某个范围内的内容2、语法格式
grep [参数选项] [条件动作][文件]3、工作原理
为了能更好的掌握awk这一剑法,我们有必要了解下其原理。

结合上图,执行流程如下

[*]首先 ,执行关键字BEGIN块的内容,即BEGIN后花括号{}里的命令;
[*]完成 BEGIN 块的执行,开始执行BODY块;
[*]逐行读取数据,默认读到 \n 分割的内容为一条 记录,也就是所谓的行;
[*]将记录按照指定的分隔符划分为 字段,也就是列 ;$0 则表示所有域(即一行内容),\(1** 表示第一列,**\)n 表示第 n 列;
[*]循环执行BODY块中的命令,每读取一行,执行一次BODY块命令,直到数据的最后一行处理完为止;
[*]最后执行END块命令,END块一般输出最终结果
BEGIN(开始块)
语法格式
BEGIN {awk-commands}开始块就是在程序启动的时候执行的代码部分,并且它在整个过程中只**执行一次 **
一般情况下,我们会在开始块中 **初始化一些变量 **;
注: 开始块部分是可选的,可以有也可以没有。BEGIN是关键字,必须要大写
BODY(主体块)
语法格式
/pattern/ {awk-commands}每一个输入的行都会执行一次主体部分的命令
注: 在主体块部分没有关键字存在
END(结束块)
语法格式
END {awk-commands}注:结束块是在程序结束时执行的代码。 END 也是 AWK 的关键字,它也必须大写。 与开始块相似,结束块也是可选的。
以上可以简单总结为:记录 (Record) 就是行,字段 (Field) 就是列,BEGIN 是预处理阶段,body 是 awk 真正工作的阶段,END 是最后处理阶段。
4、参数说明
参数参数说明-F指定字段分隔符-v定义或修改一个awk内部的变量5、内置变量
每一行是一条记录(Record),通过分隔符分割的每一列是一个字段(Field)


[*]NR: 表示当前的行数;
[*]NF: 表示当前的列数;
[*]RS : 行分隔符,默认是换行;
[*]FS: 列分隔符,默认是空格和制表符;
[*]OFS: 输出列分隔符,用于打印时分割字段,默认为空格
[*]ORS : 输出行分隔符,用于打印时分割记录,默认为换行符
6、常用函数
awk 内藏了大量功能强大且有用的函数,当然了,你也可以定义自己的函数
函数函数功能gsub(r, s, t)指定的目标范围(t)内,用r替换s;t省略时,默认为$0作为参数,即整行文本index(s, t)返回子串 t 在 s 中的位置length(s)返回s的长度split(s,a,fs)分割字符串,并将分割后的各字段存放在数组 a 中substr(s, p, n)截取字符串。sub(r,s)用$0中最左边最长的子串代替s;substr(s,p)返回字符串s中从p开始到最后的字符串;substr(s,p,n)返回字符串s中从p开始长度为n的字符串tolower(s)将字符串s转换为小写toupper(s)将字符串转换为大写7、输出格式
awk提供 printf 函数进行格式化输出功能
语法格式(如果你学过C语言,那么这个你应该很熟悉了)
printf("%12s,%02d,%0.2f\n",s,d,g);常用的格式化方式:

[*]%d 十进制有符号整数
[*]%u 十进制无符号整数
[*]%f 浮点数
[*]%s 字符串
[*]%c 单个字符
[*]%e 指数形式的浮点数
[*]%x %X 无符号以十六进制表示的整数
[*]%0 无符号以八进制表示的整数
[*]%g 自动选择合适的表示法
[*]\n 换行符
[*]\t Tab符
上面我们悄悄的提到awk也是一种编程语言,相信你还没有忘记吧。不信的话你回头看看(●'◡'●)
既然是编程语言,那么它肯定是支持 条件语句、循环语句、数组、函数等的
8、实践操作
光说不练假把式,上面说了这么多其用法。接下来我们就实际操练一番呗
以下操作都是基于myfile.txt 文本来操作的,内容如下
# cat myfile.txt
-rw-r--r-- 1 root   root   44 Mar 26 14:43 a1.txt
-rw-r--r-- 1 root   root   65 Mar 26 14:56 a2.txt
-rw-r--r-- 1 root   xiezhr   92 Mar 26 15:00 a.txt
-rwxr-xr-x 1 xiezhr xiezhr    0 Mar 14 22:37 c.txt
drwxr-xr-x 2 xiezhr xiezhr 4096 Mar 26 21:46 dir
-rw-r--r-- 1 root   root      0 Mar 17 23:03 dir2
drwxr-xr-x 2 root   xiezhr 4096 Mar 17 23:03 dir3
drwxr-xr-x 2 root   root   4096 Mar 18 20:48 dir5
drwxr-xr-x 2 root   root   4096 Mar 18 21:18 dir6
drwxr-xr-x 2 root   root   4096 Mar 13 15:27 dir_bak
-rw-r--r-- 1 root   root   14 Apr9 11:23 file1.txt
-rw-r--r-- 1 root   root    117 Apr9 11:04 file.txt
-rw-r--r-- 1 root   root    132 Mar 17 00:18 movie.tar.gz
-rw-r--r-- 1 root   root   15 Mar 26 10:41 m.tx
-rw-r--r-- 1 root   root      0 Apr 17 10:27 myfile.txt
-rw-r--r-- 1 root   root    192 Mar 26 14:28 test1.txt
-rw-r--r-- 1 root   root      6 Mar 26 10:05 test2.txt
-rw-r--r-- 1 root   root   10 Mar 26 10:24 test3.txt
-rw-r--r-- 1 root   root   44 Mar 17 22:27 test.txt
-rw-r--r-- 1 root   root      0 Mar 11 22:52 tt.txt
-rw-r--r-- 1 root   root   31 Mar 26 21:08 xaa
-rw-r--r-- 1 root   root   45 Mar 26 21:08 xab
-rw-r--r-- 1 root   root   16 Mar 26 21:08 xac
-rw-r--r-- 1 root   root    527 Apr9 10:55 xiezhr.txt① 显示文件中第3行
# awk 'NR==3' myfile.txt
-rw-r--r-- 1 root   xiezhr   92 Mar 26 15:00 a.txtNR在上面已经提到过了,表示行号。NR==3 表示第三行。==表示等于,=表示赋值,这里别写错了哈。
② 显示3到5行
# awk 'NR==3,NR==5' myfile.txt
-rw-r--r-- 1 root   xiezhr   92 Mar 26 15:00 a.txt
-rwxr-xr-x 1 xiezhr xiezhr    0 Mar 14 22:37 c.txt
drwxr-xr-x 2 xiezhr xiezhr 4096 Mar 26 21:46 dir③ 显示输出文件中的1、3、5 列
# awk '{print $1,$3,$5}' myfile.txt
-rw-r--r-- root 44
-rw-r--r-- root 65
-rw-r--r-- root 92
-rwxr-xr-x xiezhr 0
drwxr-xr-x xiezhr 4096
-rw-r--r-- root 0
drwxr-xr-x root 4096
drwxr-xr-x root 4096
drwxr-xr-x root 4096
drwxr-xr-x root 4096
-rw-r--r-- root 14
-rw-r--r-- root 117
-rw-r--r-- root 132
-rw-r--r-- root 15
-rw-r--r-- root 0
-rw-r--r-- root 192
-rw-r--r-- root 6
-rw-r--r-- root 10
-rw-r--r-- root 44
-rw-r--r-- root 0
-rw-r--r-- root 31
-rw-r--r-- root 45
-rw-r--r-- root 16
-rw-r--r-- root 527还有一种写法,这次我们来打印1、3和最后一列(之所以要打印最后一列,是因为我们要引入新的知识点O(∩_∩)O)
# awk -F " " '{print $1,$2,$NF}' myfile.txt
-rw-r--r-- 1 a1.txt
-rw-r--r-- 1 a2.txt
-rw-r--r-- 1 a.txt
-rwxr-xr-x 1 c.txt
drwxr-xr-x 2 dir
-rw-r--r-- 1 dir2
drwxr-xr-x 2 dir3
drwxr-xr-x 2 dir5
drwxr-xr-x 2 dir6
drwxr-xr-x 2 dir_bak
-rw-r--r-- 1 file1.txt
-rw-r--r-- 1 file.txt
-rw-r--r-- 1 movie.tar.gz
-rw-r--r-- 1 m.tx
-rw-r--r-- 1 myfile.txt
-rw-r--r-- 1 test1.txt
-rw-r--r-- 1 test2.txt
-rw-r--r-- 1 test3.txt
-rw-r--r-- 1 test.txt
-rw-r--r-- 1 tt.txt
-rw-r--r-- 1 xaa
-rw-r--r-- 1 xab
-rw-r--r-- 1 xac
-rw-r--r-- 1 xiezhr.txt

[*]-F 指定分隔符,F要是大写哦
[*]NF表示最后一列,$1 表示第一列,$2 表示第二列,$3表示第三列.......依次类推,但是$0表示一整行
④格式输出我们想要的内容。
# awk '{printf "%-4s,%-2s,%-4s\n",$1,$3,$5}' myfile.txt
-rw-r--r--,root,44
-rw-r--r--,root,65
-rw-r--r--,root,92
-rwxr-xr-x,xiezhr,0   
drwxr-xr-x,xiezhr,4096
-rw-r--r--,root,0   
drwxr-xr-x,root,4096
drwxr-xr-x,root,4096
drwxr-xr-x,root,4096
drwxr-xr-x,root,4096
...

[*]学过C语言的你可能已经发现了,这里的格式输出跟C语言中printf用法是一样的
[*]%s 表示占位符
[*]-4 表示列宽为4,且左对齐
⑤ 过滤出第四列是xiezhr,第七列是17的记录
# awk '$4=="xiezhr" && $7==17 {print $0}' myfile.txt
drwxr-xr-x 2 root   xiezhr 4096 Mar 17 23:03 dir3⑥ 指定"|"分隔符,并打印出来
# awk '{print $1,"|",$3}' myfile.txt
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root
-rwxr-xr-x | xiezhr
drwxr-xr-x | xiezhr
-rw-r--r-- | root
drwxr-xr-x | root
drwxr-xr-x | root
drwxr-xr-x | root
drwxr-xr-x | root
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root
-rw-r--r-- | root⑦ 条件(正则表达式)匹配(过滤出xiezhr用户的所有文件,以及最后一行)
# awk '$3 ~/xiezhr/ || NR==NF {print NR,$0}' myfile.txt
4 -rwxr-xr-x 1 xiezhr xiezhr    0 Mar 14 22:37 c.txt
5 drwxr-xr-x 2 xiezhr xiezhr 4096 Mar 26 21:46 dir
9 drwxr-xr-x 2 root   root   4096 Mar 18 21:18 dir6⑧ gsub替换内容(我们把文件中的-rw-r--r-- 替换成xiezhrspace)
# awk '{gsub("-rw-r--r--","xiezhrspace",$0);print $0}' myfile.txt
xiezhrspace 1 root   root   44 Mar 26 14:43 a1.txt
xiezhrspace 1 root   root   65 Mar 26 14:56 a2.txt
xiezhrspace 1 root   xiezhr   92 Mar 26 15:00 a.txt
-rwxr-xr-x 1 xiezhr xiezhr    0 Mar 14 22:37 c.txt
drwxr-xr-x 2 xiezhr xiezhr 4096 Mar 26 21:46 dir
xiezhrspace 1 root   root      0 Mar 17 23:03 dir2
drwxr-xr-x 2 root   xiezhr 4096 Mar 17 23:03 dir3
drwxr-xr-x 2 root   root   4096 Mar 18 20:48 dir5
drwxr-xr-x 2 root   root   4096 Mar 18 21:18 dir6
drwxr-xr-x 2 root   root   4096 Mar 13 15:27 dir_bak
xiezhrspace 1 root   root   14 Apr9 11:23 file1.txt
xiezhrspace 1 root   root    117 Apr9 11:04 file.txt
xiezhrspace 1 root   root    132 Mar 17 00:18 movie.tar.gz
xiezhrspace 1 root   root   15 Mar 26 10:41 m.tx
xiezhrspace 1 root   root      0 Apr 17 10:27 myfile.txt
xiezhrspace 1 root   root    192 Mar 26 14:28 test1.txt
xiezhrspace 1 root   root      6 Mar 26 10:05 test2.txt
xiezhrspace 1 root   root   10 Mar 26 10:24 test3.txt
xiezhrspace 1 root   root   44 Mar 17 22:27 test.txt
xiezhrspace 1 root   root      0 Mar 11 22:52 tt.txt
xiezhrspace 1 root   root   31 Mar 26 21:08 xaa
xiezhrspace 1 root   root   45 Mar 26 21:08 xab
xiezhrspace 1 root   root   16 Mar 26 21:08 xac
xiezhrspace 1 root   root    527 Apr9 10:55 xiezhr.txt

[*]这里用了akw 的查找替换功能,即gsub函数,gsub在上面已经具体说过了,如果忘记了可以返回去看看

⑨ if语句(前面说过awk还是一种编程语言,可能你也是半信半疑的,这里就来演示一下awk的if语句,让你见识一下,
来源:https://www.cnblogs.com/xiezhr/p/17343228.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 快速上手Linux核心命令(五):文本处理三剑客