栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

大数据学习教程SD版—第一篇【shell】

大数据学习教程SD版—第一篇【shell】

文章目录
  • 1.shell
    • 1.1 变量
    • 1.2 运算符
    • 1.3 条件判断
    • 1.4 流程控制
    • 1.5 控制台输入
    • 1.6 函数
    • 1.7 工具
    • 1.8 题库

1.shell

Shell 命令行解释器,Linux的脚本编程语言

1.1 变量
  1. 常用系统变量:$HOME $PWD $SHELL $USER……
  2. 严格的空格规则
  • 等号两侧不能有空格
  • 变量中存在空格,可以使用“”或者()包裹
  • expr 运算符间必须要有空格
  • 条件判断[] 内部左右两侧都要有空格
  • if、while、for 后要有空格
  1. bash中默认类型都是字符串类型
  2. export 提升变量为全局变量
  3. $0 脚本名 , 1 − 9 参 数 , 1-9 参数, 1−9参数,# 获取参数个数
  4. ∗ 获 取 所 有 参 数 , 可 直 接 用 于 f o r 循 环 , 用 “ * 获取所有参数,可直接用于for循环,用“ ∗获取所有参数,可直接用于for循环,用“*”,则把会进行拼接操作
  5. @ 获 取 所 有 参 数 , 转 成 列 表 , 用 “ @ 获取所有参数,转成列表,用“ @获取所有参数,转成列表,用“@”,效果一样
  6. $? 获取上条命令返回值
1.2 运算符
  1. 数值运算方式:$(()) 、 $[]、expr
  2. 乘法运算符:
在[]内部为*  在expr中为*
1.3 条件判断
  1. 数值比较判断:-lt -le -eq
  2. 文件权限判断:-r -w -x
  3. 文件类型判断:-f -e -d
  4. 字符串比较判断:=
  5. 多条件判断:&& 与 || 或
1.4 流程控制
  1. if 选择语句:
if [ xxx ];then
	xxx
elif [ xxx ];then
fi
  1. case选择语句:
case $var in 
xxx)
	xxx
;;
xxx)
	xxx
;;
*)
	xxx
;;
easc
  1. for 循环语句:
for ((xxx;xxx;xxx))
do
	xxx
done
for item in x y z
do
	xxx
done
  1. while 循环语句:
while [ xxx ]
do
	xxx
done
1.5 控制台输入
  1. read xxx

    -p “提示信息”

    -t 等待时间s

1.6 函数
  1. 系统函数
  • basename 文件名截取

    basename /home/aaa/example.txt   # out:expample.txt
    basename /home/aaa/example.txt .txt #out:example
    
  • dirname 文件路径截取

    dirname /home/aaa/example.txt # out:/home/aaa
    
  1. 自定义函数

    function funname(){
    	xxx
    }
    # 由于shell脚本是逐行运行,所以调用函数前必须先声明
    # 函数的形参,通过$n指定,调用函数方式:funname $x $y ……
    
1.7 工具
  1. cut :裁剪数据, 默认“t”
  • -f:列号,多列用“,”连接,范围用“-”

  • -d:分隔符

    ifconfig eth0 |grep inet|cut -d " " -f 10   # 切出linux本机IP地址,版本不同,显示不同
    
  1. sed: 流编辑器,一次处理一行,不会改变源文件内容
  • -e edit的缩写,在多个命令之前的短选项

    • a 新增add

       "na xxx" # 表示在第n行下面插入xxx
      
    • d 删除 delete

      "/xxx/d" # 表示删除xxx的那一行
      
    • s 替换 replace

      "s/old/new/g" # 表示把old替换成new
      
  1. awk: 文本分析工具,逐行读入,以分隔符进行切割,默认分割符“ ”
  • -F : 指定分隔符

  • -v : 定义变量

    awk -F "x" '/pattern/ {action}' filename #找出匹配到pattern的行,以“x”分割,执行action动作
    
    BEGIN END # 匹配行的开头和结尾
    -v i=1 # 后续使用变量i时,不需要使用$i,直接使用 i 即可
    
    • 内置变量
      • FILENAME :文件名
      • NR: 行号
      • NF: 每行切割后的列数
    ifconfig eth0|grep inet|awk -F " " '{print $2}' # # 和cut一样切出linux本机IP地址,版本不同,显示不同
    
  1. sort : 文件排序
  • -n : 按照数值大小排序number
  • -r : 反转排序reverse
  • -t : 指定排序所用分隔符
  • -k : 指定排序的列
sort -t 'x' -nk y filename # 按照x进行分割,按照y列进行排序
1.8 题库
  1. 查询file.txt中空行所在的行号

    awk '/^$/ {print NR}' file.txt
    
  2. 计算file.txt第二列的和并输出[每一行的格式为:name score]

    cat file.txt |awk -F " " '{sum+=$2} END{print sum}'
    
  3. shell 检查文件是否存在

    if [ -f file.txt ];then
    	echo "exists"
    else
    	echo "not exsits"
    fi
    
  4. 对数字文件进行排序

    sort -n file.txt
    
  5. 查找/home 文件夹下所有文本,文本内容包含“xxx”的关键字

    grep -r "xxx" /home |cut -d ":" -f 1
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633072.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号