一、针对/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