大数据学习:shell基础

文章目录

      • 一、常用shell命令
        • 任务一:查看`/etc`目录信息前5行信息
        • 任务二:查看`/etc/profile`文件后5行信息
      • 二、grep命令
        • 选项参数
        • 任务一:抓取`/etc`目录下的python信息
        • 任务二:抓取`/etc/profile`文件里的dev信息
        • 任务三:抓取用户数据文件中以us打头的信息
        • 任务四:显示所有以win开头的文件中包含hello的行
      • 三、find命令
        • 选项参数
        • 任务一:按类型查找
          • 任务二:按大小查找
        • 任务三:按权限查找
      • sed命令
        • 参数说明
        • 替换操作(s - substitute)
          • 任务一:将所有行的第一个hello替换成HELLO
          • 任务二:将第2行到第3行的第2个hello替换成HELLO
          • 任务三:将第2行的hello全部替换成HELLO
          • 任务四:将全部的hello替换成HELLO后生成新文件
          • 任务五:将全部的hello替换成hi,要求修改原文件
        • 插入操作(i - insert, a - append)
          • 任务一:在第2行之前插入一行新内容
          • 任务二:在第2行之后插入一行新内容
        • 删除操作(d - delete)
          • 任务一:删除第2行
          • 任务二:删除第2行到第3行
          • 任务三:删除文件所有行
          • 任务四:删除包含指定字符串的行

一、常用shell命令

任务一:查看/etc目录信息前5行信息

  • 命令:ll /etc | head -5
    大数据学习:shell基础_第1张图片

任务二:查看/etc/profile文件后5行信息

  • 命令:cat /etc/profile | tail -5
    大数据学习:shell基础_第2张图片

二、grep命令

选项参数

参数 作用
-c 只输出匹配行的计数
-l 不区分大 小写(只适用于单字符)
-h 查询多文件时不显示文件名
-n 显示匹配行及行号
-s 不显示不存在或无匹配文本的错误信息
-v 显示不包含匹配文本的所有行
\ 忽略正则表达式中特殊字符的原有含义
[ ] 单个字符,如[A]即A符合要求
[-] 范围,如[A-Z],即A、B、C一直到Z都符合要求
. 所有的单个字符
* 任意字符,长度可以为0

任务一:抓取/etc目录下的python信息

  • 命令:ll /etc | grep python

在这里插入图片描述

  • 命令:ll /etc | grep -c python
    在这里插入图片描述

任务二:抓取/etc/profile文件里的dev信息

  • 命令:cat /etc/profile | grep dev
    大数据学习:shell基础_第3张图片

任务三:抓取用户数据文件中以us打头的信息

  • 命令:cat /etc/passwd | grep us*
    大数据学习:shell基础_第4张图片

任务四:显示所有以win开头的文件中包含hello的行

  • 命令:grep hello win*
    在这里插入图片描述

三、find命令

选项参数

参数 作用
-type 按类型查找(d - 目录;l - 链接;f - 文件)
-name 按名称查找(可使用通配符)
-size 按大小查找
-perm 按权限查找

任务一:按类型查找

  • 命令:find /etc/sysconfig -type 'd'
    大数据学习:shell基础_第5张图片
  • 检查是否查找成功
    大数据学习:shell基础_第6张图片
  • 命令:find /etc/sysconfig -type 'l'
    大数据学习:shell基础_第7张图片
  • 命令:find /etc/sysconfig -type 'f'
    大数据学习:shell基础_第8张图片
任务二:按大小查找
  • 命令:find /etc/sysconfig -size 15c(等于15字节)
    在这里插入图片描述
  • 命令:find /etc/sysconfig -size +10k(大于10240个字节)
    大数据学习:shell基础_第9张图片
  • 命令:find /etc/sysconfig -size -20c (小于20个字节)
    大数据学习:shell基础_第10张图片

任务三:按权限查找

  • 命令:find /etc/sysconfig -perm '777' (权限字符串:rwxrwxrwx)
    大数据学习:shell基础_第11张图片
  • 命令:find /etc/sysconfig -perm '755' (权限字符串:rwxr-xr-x)
    大数据学习:shell基础_第12张图片

sed命令

参数说明

参数 作用
a 新增, a 的后面可以接字串,这些字串会在新的一行出现(当前行的下一行)
c 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d 删除,因为是删除啊,所以 d 后面通常不接任何东西
i 插入, i 的后面可以接字串,这些字串会在新的一行出现(当前行的上一行)
p 打印,将某个选择的数据打印出,通常 p 会与参数 sed -n 一起运行
s 取代,可以直接进行取代工作,通常这个 s 的动作可以搭配正规表示法

替换操作(s - substitute)

任务一:将所有行的第一个hello替换成HELLO
  • 预备工作:创建demo.txt
    大数据学习:shell基础_第13张图片
  • 命令:sed "s/hello/HELLO/" demo.txt
    大数据学习:shell基础_第14张图片
任务二:将第2行到第3行的第2个hello替换成HELLO
  • 命令:sed "2,3s/hello/HELLO/2" demo.txt
    大数据学习:shell基础_第15张图片
任务三:将第2行的hello全部替换成HELLO
  • 命令:sed "2s/hello/HELLO/g" demo.txt
    大数据学习:shell基础_第16张图片
任务四:将全部的hello替换成HELLO后生成新文件
  • 命令:sed "s/hello/HELLO/g" demo.txt > demo1.txt
    大数据学习:shell基础_第17张图片
任务五:将全部的hello替换成hi,要求修改原文件
  • 执行命令: sed -i "s/hello/hi/g" demo.txt
    大数据学习:shell基础_第18张图片

插入操作(i - insert, a - append)

任务一:在第2行之前插入一行新内容
  • 命令:sed "2 i I love Linux" demo.txt
    大数据学习:shell基础_第19张图片
任务二:在第2行之后插入一行新内容
  • 命令:sed "2 a Linux is fun and I love it" demo.txt
    大数据学习:shell基础_第20张图片

删除操作(d - delete)

任务一:删除第2行
  • 命令:sed '2d' demo.txt
    在这里插入图片描述
任务二:删除第2行到第3行
  • 命令: sed '2,3d' demo.txt
    在这里插入图片描述
任务三:删除文件所有行
  • 命令:sed 'd' demo.txt
    在这里插入图片描述
任务四:删除包含指定字符串的行
  • 命令:sed '/scala/g' demo.txt
    大数据学习:shell基础_第21张图片
  • 思考题:删除匹配行时,只是删除内容,行还依然存在,如何能将行也删除掉?
  • 将动作参数最后的/g改为/d即可
  • 命令:sed '/scala/d' demo.txt
    大数据学习:shell基础_第22张图片

你可能感兴趣的:(大数据,学习)