grep,sed,awk实战

grep -E '^(root|sshd)\>'   /etc/passwd     找出以root或者sshd开头的,且只含root或者sshd,>表示匹配到root或者sshd就结束了,类似情况如下图:

grep,sed,awk实战_第1张图片

grep -c '^yu'    /etc/passwd   匹配含yu这个用户出现的次数

grep -m 2 '^yu'  /etc/passwd   最大只匹配2次 含yu这个用户

grep,sed,awk实战_第2张图片

grep -l '^yu\>' /etc/passwd a.txt lovers.txt   从多个文件中找只含有yu开头的且yu右边不匹配的文件的名字

grep -Ev '.*/bin/bash$' a.txt    从a.txt中找出不以/bin/bash结尾的行 

grep -v '/bin/bash$'  /etc/passwd    从a.txt中找出不以/bin/bash结尾的行

 grep -E '\<[0-9]{2,3}\>' a.txt    从a.txt中找出只含有2位数或者3位数的,\<,\>表示2位数3位数左右两个不再有其他数字了

grep,sed,awk实战_第3张图片

grep -E '^[[:space:]][^[:space:]]' lovers.txt   找到以1个空格开头,第二个不是空格的内容

grep -E '^[[:space:]]' lovers.txt   找到以空格开头的内容

grep -E '^[[:space:]].*' lovers.txt   找到以空格开头,后面任意内容的行

grep -E '^[[:space:]][^[:space:]]+' lovers.txt 找到以1个空格开头,第二个不是空格,继续后面多个都不是空格的内容

grep,sed,awk实战_第4张图片

 找出不区分大小写以i开头的行,有以下3种写法:

grep -i '^I' lovers.txt

grep -E '^(i|I)' lovers.txt

grep -E '^[iI]' lovers.txt

grep,sed,awk实战_第5张图片

sed -n '1,10s/^bin/C/p' a.txt     将a文件中1到10行中以bin开头的bin替换成C,取消默认输出,并只打印修改部分内容

sed -ne '1,10s/^bin/C/p' -e '1,10s/^m/M/p' a.txt   将a文件中1到10行中以bin开头的bin替换成C,1到10行中以m开头的m替换成M,并只打印修改部分内容

sed '5,$d' a.txt   删除a文件中第5行到最后行内容 

sed '/^root/,/^ftp/d' a.txt    删除a文件中以root开头的行到以ftp开头的行

sed -r -e 's/^[[:space:]]+/#/p' -e  's/^$/#/g' lovers.txt    将文件中以1个或者多个空格开头的行的空格换成#,并且将空行换成#

sed -e '/^#/d'  -e '/^$/d' lovers.txt   删除文件中以#开头的行以及删除空行

sed '/^#/d;/^$/d' lovers.txt     删除文件中以#开头的行以及删除空行

sed -r '1,3s/(^.)/@\1/p' -n lovers.txt   将文件的第1到3行的开头添加一个@

ifconfig eth0 | sed '2s/^.*inet //;2s/ net.*$//p' -n     取eth0的ip

ifconfig  eth0 | sed -n '2p' | sed  's/^.*inet //;s/ net.*$//'       取eth0的ip

sed 's/^.*release //;s/[.].*//' /etc/redhat-release       取出linux系统版本中的7

sed -r 's/^.*release[[:space:]]*([^.]).*/\1/p' /etc/redhat-release  -n       取出linux系统版本中的7

awk -F ':' '$3>1000{print $1,$6}' a.txt   打印用户id大于1000的用户及用户的家目录

awk 'NR<6{print "#"$0}' chaoge.txt    文件前5行添加一个#

awk -F '[ :]'  '!/^$/{print $4}'   tel.txt     将文件中以空格或者:分隔,并匹配非空行后打印第4列内容

awk -F '[ :]'  '$2~/^D/{print  $2}'  tel.txt    将文件中以空格或者:分隔打印第二列为D开头的姓

 

grep,sed,awk实战_第6张图片

awk -F '[ :]'     -v OFS=','    '!/^$/{print $2,$1}'   tel.txt   将文件中以空格或者:分隔,匹配非空行,打印第2列,第一列,并以,作为输出分隔符

awk '!/^$/'  tel.txt        打印文件所有非空行内容

awk  '!/^$/{print $0}'    打印文件所有非空行内容

你可能感兴趣的:(linux,运维,服务器)