grep
grep -e bash -e sh passwd ------过滤bash和sh
grep -E "bash|sh" passwd ------过滤bash和sh
grep root passwd ------过滤root关键字
grep -E "\<root" passwd ------root前不能有字符
grep -E "\<root\>" passwd ------root前后都不能有字符
grep root passwd -A2 ------显示过滤行的下面2行
grep root passwd -B2 ------显示过滤行的上面2行
grep root passwd -v ------把root出外
vim too
{
uoo
uwo
uso
usdado
ubafo
}
grep u.o too ------以u开头o结尾中间1个任意字符
grep u....o too ------以u开头o结尾中间3个任意字符
grep u.*o too ------以u开头o结尾中间任意字符
grep -E 'u.+o' too ------1次到任意次
grep -E 'u.?o' too ------0次到1次
grep -E 'u.{1,2}o' too ------1,2次
grep -E 'u.{2,}o' too ------最少2次
===================================================
sed
用too文件 与fstab进行操作
sed -ne '1p;2p' too 查看too的1,2行
sed -n 2p too 查看too第二行
sed -n 2,4p too 查看too2到4行
sed -ne 1,5p too 查看too1,5行
cp /etc/fstab .
sed 5d fstab 删除第5行
sed '/^#/d' fstab 删除fstab带#
sed -e '3,$d' too 删除too3行以后
sed -ne '/UUID/p' fstab ------除了uuid其余全部删除
sed '4ahello' too 给too第四行后加hello
sed '4,5ahello' too 给too4,5行后加hello
sed '$ahello' too 最后一行加hello
sed '/UUID/ahello' fstab
sed '/^#/ctoo' fstab 把fstab里#的行全部换成too
sed '/^#/d' fstab 删除带#的行数
sed '/^#/d;/^$/d' fstab 删除带#的行数 删除空行
sed '/^#/w file' fstab 把带#的内容全部倒入file里
sed '2rwestos2' westos1 把westos2插入到westos1第二行
前提:
在mnt下,cp/etc/passwd .
使用mnt下的passwd实验
sed '/sbin/cwestos' passwd -------把带有sbin的行全部换成westos
sed 's/sbin/westos/g' passwd -------把每一行带有sbin的换成westos
sed '1,5s/sbin/westos/g' passwd -------把1-5行带sbin的换成westos
sed '1,5s/sbin/westos/' passwd -------把1-5行的第一个sbin换成westos
sed '2s/sbin/westos/g;5s/sbin/westos/g' passwd -把第2行和第5行的sbin换成westos
sed 's/sbin/westos/g;s/nologin/hello/g' passwd -把全部的sbin换成westos同时把全部的nologin换成hello
sed '/lp/,/halt/s/sbin/westos/g' passwd -从行lp开始到halt,所有sbin换成westos
sed 's@/@###@g' passwd --把每一行的/换成###
sed 's@/@###@g' -i passwd --更改完后的内容保存到passwdvim
使用配置文件方式
vim rule
{
s/sbin/westos/g
s/nologin/hello/g
}
sed -f rule passwd
awk
awk -F : 'BEGIN{START=0}{print START}END{print "START"}' passwd
开始变量=1逐行输出,结尾输出START
awk -F : 'BEGIN{START=0}{print NR}END{print "START"}' passwd
变量=1开始 输出行数,结尾输出START
awk -F : 'BEGIN{START=0}{print NF}END{print "START"}' passwd
变量=1开始 输出列数,结尾输出START
awk -F : 'BEGIN{N=0}{N++}END{print N}' passwd
N=1开始,每行自加1,输出N
awk -F : '/sbin/{print $0}' passwd
输出带有sbin行的 每一列
awk -F : '!/sbin/{print $0}' passwd
输出不带有sbin行的 每一列
awk -F : '/sbin/||/test/{print $0}' passwd
输出带有sbin或者带有test行数的每一列
awk -F : '/sbin/&&/test/{print $0}' passwd
输出带有sbin且带有test行数的每一列
awk -F : '/sbin/&&/var/{print $1,$2}' passwd
输出带有sbin且带有var行数的第一列和第二列
awk -F : '/sbin/&&/var/{print $1":"$2}' passwd
输出带有sbin且带有var行数的第一列:第二列
awk -F : '$1~/bin/{print $0}' passwd
所有行中第1列带有bin的,如果有输出所有列