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

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 参数, 19# 获取参数个数
  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
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道-闇影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值