grep -E '^(root|sshd)\>' /etc/passwd 找出以root或者sshd开头的,且只含root或者sshd,>表示匹配到root或者sshd就结束了,类似情况如下图:
grep -c '^yu' /etc/passwd 匹配含yu这个用户出现的次数
grep -m 2 '^yu' /etc/passwd 最大只匹配2次 含yu这个用户
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 -E '^[[:space:]][^[:space:]]' lovers.txt 找到以1个空格开头,第二个不是空格的内容
grep -E '^[[:space:]]' lovers.txt 找到以空格开头的内容
grep -E '^[[:space:]].*' lovers.txt 找到以空格开头,后面任意内容的行
grep -E '^[[:space:]][^[:space:]]+' lovers.txt 找到以1个空格开头,第二个不是空格,继续后面多个都不是空格的内容
找出不区分大小写以i开头的行,有以下3种写法:
grep -i '^I' lovers.txt
grep -E '^(i|I)' lovers.txt
grep -E '^[iI]' lovers.txt
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开头的姓
awk -F '[ :]' -v OFS=',' '!/^$/{print $2,$1}' tel.txt 将文件中以空格或者:分隔,匹配非空行,打印第2列,第一列,并以,作为输出分隔符
awk '!/^$/' tel.txt 打印文件所有非空行内容
awk '!/^$/{print $0}' 打印文件所有非空行内容