1、显示/etc/passwd 文件中以bash结尾的行。

cat /etc/passwd | grepbash$

2、显示/etc/passwd文件中的两们或三位数(例如:99,100)

grep -n '\b[[:digit:]]\{2,3\}\b' /etc/passwd

3、查看硬盘的使用情况

df -hl

4、查看cpu的使用使用情况

   ps aux 

5、查看access.log中访问量最多的ip.

awk '{print $1}' access.log | uniq -c | sort -k 1 -n -r | head -n 1

6、要开机启动a.sh脚本时

vim /etc/rc.local

a.sh

7、TCP/IP

netstat -nap | grep SYN_RECV

8、新加环境变量

#export PATH=/usr/local/abc/bin/xyz 

9、写一个脚本3天前修改过的带有“.log”的文件并册除。

#find / -name "*.log" -mtime +3 -exec rm -rf {} \;

10、判断一个文件/test是否在,如果不在请新建文件。

vim abc.sh

#!/bin/bash

if [ ! -f "/test" ];then

mkdir /test

fi

grep 学习

1、显示所有包含San的行

#grep 'San' datafile

2、显示所有以J开始的人名所在的行

#grep '^J' datafile

3、显示所有不包括834的行,就是过滤掉它

#grep -v "834" datafile

4、显示所有生日在December的行

#grep -n --color '\:12\/' datefile 

5、找出电话是0140结束

#grep --color -n '\-0140\:' datafile

sed命令大练习

1、修改一个文件中有jim的全部写成大写

#sed -e 's/^jim/JIM/' datafile

2、删除头三行

#sed -n '1,3d' datafile

3、显示以vinhv开头并且打印出电话

#awk -F ":" '/^vinhv/{print $2}' datafile

4、显示以vinhv开头的并且打印了姓名,电话,街道

#awk -F ":" '/^vinhv/{print $1,$4}'

5、显示以D开头的姓名,并打印出收入

#awk -F ":" '/^D/{print $1,$5}' datafile

6、打印出姓名以F、K开头的姓名,列印出姓名

#awk -F ":" '/^[Fk]/{print $1}' datafile

7、打印出姓名是4个字符的人名

awk -F ":" '{print $1}' datefile | awk '(length($1)==4){print $1}'

8、用awk 来统计438的区号

#awk -F ":" '{print $2}' datefile | awk -F ":" '/^438/{print $1}' 

9、grep 学习基础

grep [option] patter

grep -n --color 'oo*' a.txt

grep --color '^root' a.txt 以行首

grep --color '\<root' a.txt 有词root的行。

grep --color 'bash$' a.txt 以bash结尾

grep --color 'l..a' a.txt 中间任意

grep --color '^[arb]' a.txt

grep -v '^#' a.txt

10、sed 学习

sed -n '1,2p' a.txt

sed -n '1,2d' a.txt

sed -n 's/[a-z]o/[a-z]md/s' a.txt

sed -n '1,3p' a.txt > d.txt

sed -n '1,3d' a.txt >e.txt

sed -e '^$' a.txt

sed -e '/^g[a-z]*/d' a.txt 

sed -e 's/ab/m/' a.txt

sed -e '1,20s/^#/^$/' a.txt

sed -e '/gad/d' a.txt

sed -e '/gad/!d' a.txt  删除所有非gad开头的行

sed -e 's/..//' a.txt

sed -e 's/....$//' a.txt 删除每行的后四个字符

sed -e '/gdm/w e.sh' a.txt 将有gdm的行写入e.sh

10、awk的基本用法,awk三个人名组合,报告工具。nawk

gawk linux上的使用。

which awk

ls -l /bin/awk

awk [OPTION] 'program' FILE1 FILE2…

program:PATTERN{ACTION STATEMENT} //program由语句组成,各语句之间使用;隔开,整个program要用单引号引起来

awk [options] 'program' file1 file2

program:正则表达

关系式

OPTION:选项

awk 常见模式

1、正则表达

2、expression ~匹配,!~不匹配

3、range:格式为part1,part2

4、BEGIN\END;特殊模式后边不要加文件。

5、EMPTY:匹配任意输入行

OFS指输出定位

awk 内置变量有:

RS:输入文本信息使用的抽换符

NR:指同时处理两个文件时,从绝对数据算起,如第一个文件是1行,第二个文件是两行,那行NF就是3行。

awk:支持自义变量。

awk -v test="hello,world" 'BEGIN{print test}'

FNR:是两个文件各算各的,统计不会合在一起。

awk -F: '{print $1,$2}' /etc/passwd

awk -v 指定变量

awk -v test="hello,world" '{print test}'

awk 'BEGIN{test="hello,world";print test}'

awk '{print $0}'

awk 'BEGIN{OFS="#"}{print $1,$2}'

awk 'BEGIN{OFS="#"}{print $1,"abc",$2}'

awk '{print NF}' a.txt

awk '{printf "%-10s,%-10s\n",$1,$3}' a.txt 向右偏移10个字符

awk 的基本运算

awk -F: '/^roo./{print $1,$4}' 打印以roo开头的第1,4项。

找出所有shell中不属于bash的用户

awk -F: '$7~bash"$"{print $1,$7}' /etc/passwd

awk -F: '/^r/,/^m/{print $1,$7}'  /etc/passwd

awk -F: 'BEGIN{print "user"."id","shell"}{printf "%-10s%-10s%-20s",$1,$3,$7}' /etc/passwd

常见action

条件判断

awk -F: '{if ($1=="root")printf "%-20s\n",$1 " is admin";else printf "%-20s\n",$1 " is common"}' /etc/passwd

awk -F: -v sum=0 '{if($3>=400) sum++}END{print sum}' /etc/passwd

while循环

awk -F: '{i=1;while (i<=NF){if ($i>=4 i++)print $i }}' /etc/passwd

for循环

awk -F: '{for(i=1;i<=NF;i++){if(length($i)>=4) print $i }}' /etc/passwd

case语句

printf format取值,不会换行。

%c ASCCI

数组

数组可以不是数字;

数组是从1开始的;

netstat -nat | awk '/^tcp/{state[$NF]++}END{for (A in state){print A,state[A]}}'

查看nginx访问web最多的IP

awk '{count[$1]++}END{for(c in count){print c,count[c]}}' /var/log/httpd/access_log | sort -k2 -nr

awk '{count[$1]++}END{for(c in count){printf "%-20s    %-20s\n", c,count[c]}}' /var/log/httpd/access_log | sort -k2 -nr

条件判断

selector?if-true-exp:if-false-exp(如果真取前,如果假取后)

练习:

1、获取网址eth1的信息

ifconfig eth1 | sed -n '2p'|awk -F: '{print $2,$4}'|awk -F " " '{print $1,$3}'

2、写一个脚本,检测cups是否在运行。

#!/bin/bash

if ( service cups status );then

echo "cups service is running";

else 

echo "service is not running";

fi