• 〖Linux〗-- awk、赋值变量、if


    【 awk、赋值变量、if】

    awk 常用于处理格式非常明显的文件
    
    awk -F: '{print $1}' /etc/passwd  含义:取冒号分隔符的第一段内容
    
    $0 指取所有!
    
    NF 指有几段内容
    
    $NF 取最后一段内容
    
    NR 指代行号
    
    用 NR做 行定位  awk -F: 'NR==1{print $1,NR}'  test
    
    小于等于3行的内容 awk -F: 'NR<=3{print $1,NR}'  test
    
    3-5行的内容awk -F: 'NR>=3 && NR<=5{print $1,"---------",NR}'  test
    
    小于等于2行,大于等于7行的内容: awk -F: 'NR>=7 || NR<=2{print $1,"---------",NR}'  test
    
    nologin结尾的用户名打印出来:awk -F: '/nologin$/{print $1}'  test(正则定指,指定文件和打印指定位置)                                   
    
    用户名r开头t结尾,中间任意字符,打印UID,awk -F: '$1~/^r.*t/{print NR ,$3}' test
    
    ('$1~/^r.*t/用户名来匹配正则表达式)
    
    只打印指定文件的内容  awk -F: '$1==“root”{print NR ,$1,$3}' test
    
    打印UID大于等于7的用户名  awk -F: '$3>=7{print NR ,$1}' test
    
     
    
    自定义一个变量,然后用awk去打印  用到 -v
    
    count =7
    
    awk -v x=$count -F: '$3>=x{print NR,$1,$3}' test
    
     
    
    其他变量补充
    
    1、
    
    awk 不指定内容,以空格或是多个空格作为分隔符
    
    查看IP地址!
    
    ifconfig |awk 'NR==2{print $2}'   取IP地址
    
    可以定义 ip_addr= 'ifconfig |awk 'NR==2{print $2}'   echo $ip_addr  打印结果
    
     
    
    2、打印处理重复内容  先把重复的行放在一起,然后去重即可。
    
    sort 排序
    
    uniq 去重  -c 查看去了多少行
    
    cat a.txt | sort |uniq -c
    
     
    
    3、轻量级的操作 cut
    
    cat test |cut -d: -f1,3简单的处理文件
    
     
    
    4、du -sh /boot/ 查看文件大小
    
     
    
    5、find 命令 (找文件)
    
    find / -type f 查找根下的普通文件
    
    find / -name “*.txt”查找文件名为什么的文件
    
    find / -size +30M 大于30M的文件
    
    find / -size +10M size -30M 找出大于10M小于30M的文件
    
    find / -size +2M -type f -name *.txt 找出根下大于2M的名字中后缀为txt的普通文件。
    
     
    
    6、查找某个目录下,包含某个内容文件的文件名全部找出,并打印出来
    
    grep -rl 'root' /test  (grep -r 过滤的是目录)
    
     
    
    改主机名脚本
    
    vim a.sh
    
    read -p 'please input your hostname:' name
    
    hostnamectl set-hostname $name
    
    保存退出
    
    给执行权限,chmod -R +x a.sh
    
    执行:./a.sh
    
     
    
    shell
    
    变量
    
    1、命名规则:以字母开头,剩下的部分可以是:字母,数字,下划线。
    
    规范1.以字母开头
            2.使用中划线或者下划线做单词的连接
         3.同类型的用数字区分
         4.对于文件最好加上拓展名
    
         5.用户能一眼看出要做什么
    
    2、系统变量
    
    set:查看所有变量
    
    env:查看系统变量
    
    3、变量赋值
    
    x=1; 变量赋值
    
    echo $1输出
    
    unset x 删除变量
    
    4、常用系统变量
    
    PATH 环境变量
    PWD 当前路径
    LANG
    HOME
    HISTSIZE  历史命令,最多1000行
    PS1 存放当前用户,用于改用户名 PS1=****
    IFS
    
    5、全局变量和局部变量
    
      全局变量指所有的用户都通用。
    
      局部变量指仅仅当前用户可用。
    
         export 用于linux中定义全局变量,任何位置都有效
    
        链接:
    
    变量边界问题:用{}来定义变量的边界,括号内是一个整体。
    
    例子:money =10   echo $money ----->10   echo $money0000 没法输出,加上{}即可。
    
    echo ${money}0000   ----->100000
    
     
    
     
    
    计算内存使用率
    
     free 查看内存
    
    mem_total='free | awk 'NR==2{print $2}''    总内存
    
    mem_use= 'free | awk 'NR==3{print $3}''     使用内存
    
    echo $mem_use   查看结果
    
    浮点运算  echo 'scale=2; $mem_use/$mem_total' | bc -l |cut -d. -f2
    
    mem_per=' echo "scale=2; $mem_use/$mem_total" | bc -l |cut -d. -f2'
    
    echo ${mem_per}%  百分号的使用率
    
     
    
    运算符  注意:用$取值!!!
    
     
    
    1、算术运算符 +  -  *  /  %
    
    2、关系操作   <  >  <=  >=  ==  !=(不等于)  &&(与)  ||(或)      
    
    用两个小括号,做关系运算(())。  test命令,也可以做关系运算!
    
    中括号[]的语法结构和test一样,用中括号的话,与test连用。整型!
    
     命令下: -gt 大于 -lt 小于 -ge大于等于  -le小于等于  -eq 等于  -ne 不等于
    
         -a 同时成功   -o 仅有一个成功
    
     
    
    赋值运算符
    
     =  +=  *=  /=(除等于)  %=(取余等于) 
    
    x=1  x=$[$x+1]  echo $x=2  ---------> x=1  ((x+=1)) echo $x  2
    
    自增1或是自减1 ((i++)) ((i--))
    
     
    
    shell中的所有计算器
    
    $[]  (())  $(())
    
    $$ 进程PID
    
    $# 总共有多少参数
    
    $? 上一个命令是否正确运行
    
    测试命令:test[] [[]] (())
    
    1、测试文件状态
    
    -d 目录
    -s 文件长度 > 0、非空
    -f 正规文件
    -w 可写
    
    -r 可读
    
    -x 可执行
    
    -L 符号连接
    
    -u 文件有 suid 位设置
    
    2、字符串测试
    
    = 两个字符串相等
    
    != 两个字符串不相等
    
    -z 空串
    
    -n 非空串
    
    3、测试数值
    
    -eq 等于
    
    -ne 不等于
    
    -gt 大于
    
    -lt 小于
    
    -ge 大于等于
    
    -le 小于等于
    
    4、扩展测试符号
    
      比较数字,使用(( ))
      其他测试使用 [[ ]]
      包含数字比较的混合测试,使用[[ expr1 && expr2 ]] (( expr1 || expr2 ))
    
    两个文件的比较
     FILE1 -ef FILE2
     测试两个文件是否是相同的inode
     有时为了找到同一个INODE号的文件 更倾向于使用 find 命令的 -inum 或 --samefile
    
    FILE1 -nt FILE2
    FILE1 is newer (modification date) than FILE2
    
    FILE1 -ot FILE2
    FILE1 is older than FILE2
    
     
    
     
    
    shell 流程控制
    
    创建文件.sh结尾。vim *.sh 编写shell 以什么开始,以什么反着写结束。
    
    给文件执行权限 chmod +x *.sh
    
    ./*.sh 执行。验证结果
    
    用户输入 :read -p "please input:" var
    
    睡多少秒(延迟)sleep 0.5 延迟0.5秒
    
    输出用$var
    
     
    
    var='/etc/passwd'
    
    if [ -f $var ]
    
        then
    
            echo "$"
    
      命名上不要带系统进程名!容易产生新的进程,倒是执行错误。
    
     
    
    $1 空格分离的第一个参数
    
    $2空格分离的第二个参数
    
    $3空格分离的第三个参数
    
    $4空格分离的第四个参数
    
    $$ 进程的PID  
    
    $* 脚本文件后所有参数
    
    $@ 脚本文件后所有参数
    
    $#  总共有多少个参数
    
    $? 上一条命令是否执行成功
    
     
    
     
    
     
    
    应用举例
    
    重启nginx 服务
    
    #!/bin/bash
    
    ps aux | grep nginx |grep -v 'grep'  #查看进程
    
    if [ $? -ne 0 ]   #判断 是否开启
    
        then
    
            systemctl start nginx
    
    fi
  • 相关阅读:
    一个BUG显示了IE7和IE6解析URL中中文参数能力的不同
    Winform+Webservice小结
    精通 JS正则表达式
    JSON
    Jquery
    MongoDB 驱动实践
    概要设计(总体设计)
    LINQ 学习
    MongoDB培训
    数据流程图(需求分析方法和建模工具)
  • 原文地址:https://www.cnblogs.com/SHENGXIN/p/7565361.html
Copyright © 2020-2023  润新知