• shell编程


    标准的shell脚本包含要素:

    • Sha-Bang
    • 命令
    • chmod u+rx filename
    • 执行命令
      • bash ./filename.sh
      • ./filename.sh
      • source ./filename.sh
      • .filename.h

    1、脚本用法注释,申明脚本运行方式,可以优雅和简化运行步骤

    #!/bin/bash

    2、

    • $*、$@:代表命令行中所有的参数,前者把所有参数看作一个整体,后者对每个参数区分对待。
    • $?:最后一次执行命令的返回状态。正确为0错误为1.

    3、赋值运算符不能有空格,算术运算符必须有空格

    4、条件判断,中括号和条件判断式中间必须有空格

    5、if 判断

    #!/bin/bash
    
    if [ $1 -eq 1 ]
    then 
            echo "hello shell!"
    elif [ $1 -eq 2 ]
    then
            echo "hate shell"
    fi 

    6、case语句

    #!/bin/bash
    
    case $1 in 
    1)
            echo "nihao"
    ;;
    2)
            echo "hello"
    ;;
    *)
            echo "gun"
    ;;
    esac

    7、for循环

    #!/bin/bash
    
    s=0
    for((i=1;i<=100;i++ ))
    do 
            s=$[$s+$i]
    done 
    
    echo $s

    8、while循环

    #!/bin/bash
    
    s=0
    i=0
    while [ $i -le 100 ]
    do 
            s=$[$s + $i]
            i=$[$i + 1]
    done
    
    echo $s
    

    9、切割文件的第一列:

    cut -d "" -f 1 filename.txt
    

    10、cut

     一、切割cut.txt第一列

    cut -d " " -f 1 cut.txt
    

    二、在文件cut.txt中切割出shen

    cat cut.txt | grep shen | cut -d  " " -f 1 

    11、sed

    (以文件sed.txt为例)

    一、将“ ni hao”这个单词插入到sed.txt第二行下,打印。

    sed "2a ni hao" sed.txt

    二、删除sed.txt文件所有包含wo的行

    sed '/wo/d' sed.txt 
    

    三、将sed.txt文件中wo替换为ni

    sed "s/wo/ni/g" sed.txt 
    

    四、将sed.txt文件中的第二行删除并将wo替换为ni

    sed -e "2d" -e  "s/wo/ni/g" sed.txt
    

    12、awk

    awk[选项参数]  'pattern1{action1} pattern2{action2}...' filename     pattern:表示awk在数据中查找的内容,就是匹配模式    action:找到匹配内容时所执行的一系列命令

    一、搜索passwd文件以root关键字开头的所有行,并输出该行的第7列

    awk  -F: '/^root/{print $7}' passwd 
    

    二、搜索passwd文件以root关键字开头的所有行,并输出该行的第1列和第7列。中间以“,”隔开

    awk  -F: '/^root/{print $1","$7}' passwd 
    

    三、只显示passwd的第1列和第7列,以逗号分割,且在所有行前面添加列名user,shell在最后一行添加“gg,bin/haoya”

    awk -F: 'BEGIN{print "user,shell"} {print $1","$7} END{print "gg,bin/haoya"}' pass
    

    四、统计passwd的文件名,每行的行号,每行的列数

    awk -F : '{print FILENAME "," NR"," NF}' passwd
    

    五、查询sed.txt中空行所在的行号

    awk '/^$/{print NR}' sed.txt

    13、sort  

    作用:将文件进行排序,并将排序结果标准输出

    按照“:”分割后的第三列倒序排序     -t:设置排序时所用的分隔字符 -n:依照数值的大小排序  -r:以相反的顺序来排序 -k:指定需要排序的列

    sort -t : -nrk 3 sed.txt
    

    *练习:

    找出当前文件夹(/home)下所有的文本文件内容中包含有字符"shen"的文件名称

    grep -r "shen" /home | cut -d ":" -f 1
    

      

  • 相关阅读:
    键盘输入thisisunsafe
    vscode
    iterm2 rz sz
    homebrew镜像更换
    mac
    homebrew下载不成功
    shutil:高层文件操作
    tempfile:临时文件系统对象
    linecache:读取文本文件的指定内容
    fnmatch:Unix式glob模式匹配,简单场景下可以代替正则
  • 原文地址:https://www.cnblogs.com/darklights/p/11592842.html
Copyright © 2020-2023  润新知