Linux学习笔记(七):shell脚本下的文本处理工具

在学习Linux的过程中对shell脚本是不可避免的,那么问题来了,在shell脚本在如何对文本进行处理呢???这是一个严肃的问题。学习shell想必都有过想骂人的冲动。。。。哈哈哈。。。确实是的,很恼火的。。。。。。。
一下是学习shell脚本过程中对文本处理时的一些功能,对你肯定有用。整理不易,来个关注和点赞吧

1.文本处理-echo

echo -e "\033[40;35m...."

背景颜色范围:40--49
40:黑    41:深红   42:绿
43:黄色  44:蓝色   45:紫色
46:深绿  47:百色

字体颜色范围:30-39
30:黑     31:红     32:绿
33:黄     34:蓝色   35:紫色
36:深绿   37:百色
eg:
   echo -e "\033[40;35mhello word\033[0m" 

2.文本处理-sort

sort [选项] 输入文件

	-o 输出文件
	-d 按字典顺序排序
	-n 按数字大小输出
	-r 按逆序输出排序结果
	-k 指定分类是域上得数子分类
	-t 域分隔符;用非空格或tab键分隔域
eg:
  sort -k3 -n -r -t: /etc/passwd|more

3.文本处理-diff

diff[选项] 文件/目录 文件/目录

diff /etc/passwd /etc/passwd.bak

	-q 仅显示有无差异,不显示详细的信息
	-c 显示全部内文,并标出不同之处
	-b 不检查空格字符的不同
	-B 不检查空白行
	-r 比较子目录中的文件

4.grep 选项

-n 在每行前显示编号

应用实例:

a.设置大小写
#grep '[Tt]his' file1.txt

b.不匹配行首
#grep '^[^#]' file.txt //找出不是以#开头的字符字符串

c.匹配任意字符
#grep "s...n" file3.txt

s123n true
s34n false 

注意:三个点三个字符

d.-v
grep -v "hello" file
搜索不含有"hello" 字符串的行

5.sed操作动作

s  替代操作
i  插入命令
a  附加命令
d  删除全部匹配的行
D  删除全部匹配的行
eg:

#sed -n '1,4 p' /etc/passwd 打印/etc/passwd的1到4行

#sed '/80/D' file.txt 删除全部匹配80的行

#sed 's/var/usr/g' file.txt 所有var用usr替换

#sed '50,$s/help/man/g' file.txt所有help用man替换

#sed "3i\\chengyaogen" log   log文件的第三行前面插入chengyaogen

#sed "3a\\chengyaogen" log   log文件的第三行后面插入chengyaogen

#sed "3d"  log  删除log文件的第三行

6.awk格式

awk [选项] 'awk脚本' 输入文件

-F fs使用fs作为输入记录的字段分隔符
-f filename 从文件filename读取awk_script
-v var=value 为awk_script设置变量

awk的内置变量

变量        功能             默认

FS       输入字段分隔符     空格或tab
RS       输入记录分隔符     换行
OFS      输出字段分隔符     空格或tab
ORS      输出记录分隔符     换行
NF       当前记录非空字段的编号 $NF 最后一列
NR       从所有文件读入的记录号 $NR 对应的行号

应用实例

#awk -F : '{print NR,$1,$2}' /etc/passwd
输出/etc/passwd的第一列、第二列并显示对应的行号

#awk -F : '{print NR,$1,$NF}' /etc/passwd
输出/etc/passwd的第一列,最后一列并显示对应的行号

#awk -F : 'NR%10==5{print NR,$0}' /etc/passwd
输出行号对10 求余为5的一整行信息

#awk -F : 'NR==8,NR==13{print NR,$0}' /etc/passwd

输出行号[8,13]的行的信息

#awk -F : '{if($3>50){print $1}}' /etc/passwd

输出UID号大于50的用户名

持续关注一下:
Linux学习笔记(一)
Linux学习笔记(二)
Linux学习笔记(三):函数、文件IO和线程
Linux学习笔记(四):信息量、同步、互斥和网络编程
Linux学习笔记(五):网络编程、QT信号与槽机制
Linux学习笔记(六):交叉编译工具链,位运算实现进制转换,共用体

重要的事情说三遍:来个关注和点赞,来个关注和点赞,来个关注和点赞。。。。

此时春暖花开。。。。。。
在这里插入图片描述

发布了15 篇原创文章 · 获赞 19 · 访问量 2273

猜你喜欢

转载自blog.csdn.net/ywsydwsbn/article/details/105067470