shell 深度学习总结

本文介绍了shell脚本中awk和sed的使用,awk用于处理结构化文本,如显示特定列、自定义分隔符提取数据和条件查询;sed则是一个强大的流式文本编辑器,能进行替换、删除和操作文本。同时,正则表达式的应用也得到阐述,用于高效匹配和处理文本。
摘要由CSDN通过智能技术生成

shell 深度学习总结

前言
一 awk
二 sed
三 正则表达式


前言

		随着工作中用脚本越来越来多,深入学习了shell脚本中awk和sed两个非常有用的工具以及一些正则表达式。

提示:以下是本篇文章正文内容,下面案例可供参考

一、awk

awk是一种文本处理工具,常用于处理结构化文本文件。它可以读取文本文件中的每一行并对这些行进行分析、处理和转换。awk命令具有很多选项和功能,下面是一些常用的使用场景:

显示文件中某一列的数据:
使用awk命令来查看默认分隔符(空格)分隔的第2列的数据,例如:

awk ‘{print $2}’ filename
上述命令会输出文件中所有行的第二个单词。

使用自定义分隔符来提取数据:
你可以使用awk命令来选择一个自定义的分隔符进行数据提取,例如,假设你有一个文件,每一行是用逗号分隔的两个名字,你可以使用逗号作为分隔符来提取数据:

awk -F, ‘{print $1}’ filename
使用 Awk 进行条件查询:
可以使用awk命令进行条件查询,例如,可以查找文件中的所有行,并将包含“hello”这个单词的行打印出来:

awk ‘/hello/ {print}’ filename
awk还有很多其他用途,例如计算行数、求平均值、最小值、最大值等等。通过灵活使用awk,你可以轻松地处理各种文本文件。

下面是一个求文本中某一列平均值的示例:

假设有一个名为data.txt的文件,其中每行包含两个数字,用空格分隔,我们想求第二列数字的平均值,可以执行下面的命令:

awk ‘{sum+=$2} END {printf “Average = %.2f\n”, sum/NR}’ data.txt
该命令使用了内置变量NR,它用于存储输入文件行数。awk首先将第二列所有数字加起来,然后再计算平均值,最后使用printf函数将结果以精确到小数点后两位数的形式输出。如果你需要修改列的编号,请将$2替换为相应的列编号即可。

二、sed

sed是一种强大的流式文本编辑器,可以用来查找、替换、删除和操作文本文件中的数据。sed以行为单位处理文本文件,可以与管道操作符和正则表达式一起使用,以便快速处理大量的数据。以下是一些常用的sed命令:

替换文件中所有匹配字符串:
使用sed命令可以轻松地替换文件中所有匹配字符串,例如要将文件中的所有单词“apple”替换为“orange”:

sed ‘s/apple/orange/g’ filename
删除文件中满足条件的行:
使用sed命令可以删除文件中所有满足特定条件的行,例如删除非空的行:

sed ‘/^$/d’ filename
使用sed进行搜索和替换:
使用sed命令可以在文件中执行搜索和替换操作,例如将文件中的所有大写字母替换为小写字母:

sed ‘s/[A-Z]/\L&/g’ filename
将多个sed命令组合在一起:
使用分号可以将多个sed命令组合起来,例如:

sed ‘s/apple/orange/g; s/pear/banana/g’ filename
该命令将文件中所有的“apple”替换为“orange”,将所有的“pear”替换为“banana”。

sed是一种非常强大和灵活的文本编辑器,可以帮助你实现各种功能。学会使用sed可以大大提高你的文本处理效率。

正则表达式

正则表达式是一种用来描述和匹配文本模式的工具,它在Linux系统中被广泛应用于文本处理、搜索和匹配。下面是一些常用的正则表达式语法:

匹配单个字符:
可以使用点“.”来匹配任意字符,也可以使用方括号“[]”来匹配特定范围内的字符,例如:

匹配任意字符:.
grep “h.t” filename
该命令可以匹配所有包含"hat"、“hot”、"hit"等的行。

匹配特定字符范围:[]
grep “[abc]” filename
该命令可以匹配所有包含字符a、b或c的行。

匹配重复字符:
可以使用星号“*”、加号“+”和问号“?”来匹配重复的字符或字符类,例如:

匹配零个或多个字符:*
grep “colou*r” filename
该命令可以匹配所有包含“color”或“colour”的行。

匹配一个或多个字符:+
grep “wo+n” filename
该命令可以匹配所有包含至少一个连续的字母"o"的行,如"won"、“woon”、"woooon"等。

匹配零个或一个字符:?
grep “favou?rite” filename
该命令可以匹配所有包含"favorite"或"favourite"的行。

使用特殊字符:
可以使用特殊字符来表示特定范围的字符或字符类,例如:

匹配数字:\d
grep “\d” filename
该命令可以匹配包含数字的行。

匹配单词边界:\b
grep “\bword\b” filename
该命令可以匹配所有单独一个字为"word"的行。

正则表达式是一种强大的匹配工具,可以帮助你在Linux系统中高效地处理和搜索文本。掌握正则表达式语法可以让你在命令行中更加高效地进行文本处理。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值