• sed和awk练习及知识点


    一、针对/etc/passwd操作

    1、sed操作,将文件中的第九行至第十五行复制到第16行下。

    [root@ns1 lianxi]# sed '9,15H;16G' /etc/passwd

    2、用awk获取文件中第三行的倒数第二列字段。

    [root@ns1 lianxi]# awk -F: 'NR==3{print $(NF-1)}' /etc/passwd

    二、针对test.txt文件操作

    1、第一列为aaa行的每一行求和

    [root@ns1 lianxi]# sed -n '/^aaa/p' test.txt | awk '{print $2+$3+$4+$5}'

    [root@ns1 lianxi]# sed -n '/^aaa/p' test.txt | awk '{sum=0;for(i=2;i<=NF;i++){sum+=$i}print sum}'

    [root@ns1 lianxi]# awk '(NR%2)==1{{sum+=$2+$3+$4+$5}print sum}' test.txt 

    2、对文件偶数行求和

    [root@ns1 lianxi]# awk '(NR%2)==0{print}' test.txt | awk '{sum=0;for(i=2;i<=NF;i++){sum+=$i}print sum}'

    [root@ns1 lianxi]# awk '(NR%2)==0{print}' test.txt | awk '{print $2+$3+$4+$5}'

    [root@ns1 lianxi]# awk '(NR%2)==0{{sum+=$2+$3+$4+$5}print sum}' test.txt

    3、取出文件中的最大值

    [root@ns1 lianxi]# awk '{print $2,$3,$4,$5}' test.txt | sed 's/ / /gp' | sort -nr | head -1

    4、将test.txt文件中的所有的空格替换成!

    [root@ns1 lianxi]# sed 's/ /!/gp' test.txt

    三、case、which、continue的用法

    1、case的用法

    shell脚本中case选择语句可以结合read指令实现比较好的交互应答操作,case接收到read指令传入一个或多个参数,然后case根据参数做选择操作。

    case 变量值 in
    模式1)
    命令序列1
    ;;
    模式2)
    命令序列2
    ;;
    *)
    默认命令序列
    esac

    2、which的用法

    which命令是查找命令是否存在,以及命令的存放位置在哪。

    3、continue的用法

    continue就是不执行当前的循环,而跳到下一个循环。

    四、使用命令查看ssh的并发请求与其TCP链接状态 

    [root@ns1 lianxi]# netstat -anpt | grep :22 | awk '{print $6}' | sort  | uniq -c

    五、ps aux中的VSZ和RSS代表的含义

    a 显示所有与终端相关的进程,由终端发起的.
    x 显示所有与终端无关的进程.
    u 显示用户导向的用户列表.
    VSZ 虚拟内存集,进程占用的虚拟内存空间
    RSS 物理内存集,进程战用实际物理内存空间.
    S 可中断的睡眠态
    R 运行态
    D 不可中断的睡眠态
    T 停止态 Z 僵死态

    六、写出下列shell脚本:使用for循环在/opt下通过随机小写10位长度字母加上固定字符串test批量创建10个html文件,并且html大写。

    for i in {1..10}
    do
    aa=$(tr -dc 'a-z' </dev/urandom | head -c 10)
    touch /opt/$aa'_test.HTML'
    done

    七、随机生成十位数字,随机生成十位字母,随机生成10为字母+数字的混合,随机生成十位字母+数字+特殊符号的混合。

    [root@ns1 lianxi]# tr -dc '1-9' </dev/urandom | head -c 10;echo

    [root@ns1 lianxi]# tr -dc 'a-z' </dev/urandom | head -c 10;echo

    [root@ns1 lianxi]# tr -dc 'a-z1-9' </dev/urandom | head -c 10;echo

    [root@ns1 lianxi]# tr -dc 'a-z1-9$@!#%&' </dev/urandom | head -c 10;echo

  • 相关阅读:
    使用浏览器的 Local Storage 真的安全吗?
    传统到敏捷的转型中,谁更适合做Scrum Master?
    HBM2E Flashbolt--提升人工智能的算力
    C语言 for 循环
    C语言自加自减运算符(++i / i++)
    C语言逗号表达式
    C语言逻辑运算符
    C语言三目运算符
    C语言条件判断 if / else
    C语言 printf 函数
  • 原文地址:https://www.cnblogs.com/canflyfish/p/11537420.html
Copyright © 2020-2023  润新知