您的位置:首页 > 运维架构 > Shell

shell三剑客 grep/sed/awk和脚本编写 持续更新

2020-04-22 12:41 18 查看

参考书籍《Linux系统命令及shell脚本实践》

前提准备

百度或者谷歌搜索关键词“命令行工具”,下载安装。
Windows系统有很多命令行工具cygwin,git bash,我用的是Cmder
Mac命令行工具有自带的terminal等。

5.2 使用grep搜索文本

基于行的文本搜索工具,使用该工具时,如果匹配到相关信息就会打印出符合条件的所有行。

  1. 新建文件

    编辑文件内容

  2. 查找含有name的行:

  3. 打印出含有name行的行号,使用参数-n

  4. 忽略大小写,使用参数-i

  5. 统计输出的行数,使用参数-c

  6. 忽略大小写,统计输出的行数

  7. 打印不包含name的行,使用反选参数-v

  8. 使用cat+管道改写第7条

  9. 查看grep的所有命令参数,使用参数–help

10.3 文本处理工具sed

sed(stream editor)是一种非交互式的流编辑器,通过多种转换修改流经它的文本。默认情况下,sed并不会改变文件本身,只是将修改后的文本打印到标准输出(也就是屏幕中)。处理以行为单位,每处理完一行就立即打印出来,然后在处理下一行,直至结束。包括删除、查找、替换、添加、插入、从其他文件中读入数据等。

常用场景:

  • 常规编辑器编辑困难的文本
  • 过于庞大的文本,比如vi一个几百兆的文件
  • 有规律的文本修改,加快文本处理速度(比如全文替换)
  1. 准备文件,参考grep的1~2

shell脚本编写

变量
# 定义变量
a=1
b=hello
c="hello"
d='hello  "tom"'
e=`ls`

-左右不要带空格,如果内容有空格,用双引号或单引号括住
-双引号支持转义,$开头的变量会被替换掉

# 变量使用格式,三选一
echo $a
echo ${b}
echo "$a"

算数判断和字符串比较
  • [ 2 -eq 2 ] 相等
  • [ 2 -ne 2 ] 不等
  • [ 3 -gt 1 ] 大于
  • [ 3 -ge 1 ] 大于等于
  • [ 3 -lt 2 ] 小于
  • [ 3 -le 3 ] 小于等于
  • [ $a -gt $b ] 变量a是否大于变量b
  • [ string1 = string2 ] 字符串是否相等
  • [ -n “$var” ] 如果字符串不空,则结果为真(引用变量要加双引号,否则a未定义时,语法会报错)
  • [ -z “$var” ] 如果字符串不空,则结果为真

用$?表示上一个表达式的结果,0表示true,1表示false。

内置判断
  • [ -e file ] 如果是文件,返回真
  • [ -d file ] 如果是子目录,返回真
  • [ -f file ] 如果是普通文件,返回真
  • [ -r file ] 如果文件可读,返回真
  • [ -s file ] 如果文件长度不为0,返回真
  • [ -w file ] 如果文件可写,返回真
  • [ -x file ] 如果文件可执行,返回真
逻辑控制

if else
for循环
while循环

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Hoppaz 发布了1 篇原创文章 · 获赞 0 · 访问量 23 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: