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

原文地址:https://www.cnblogs.com/canflyfish/p/11537420.html