grep工具
grep “root” /etc/passwd
查找出文件中包含root的行
grep -v “root” /etc/passwd
查找出文件中不包含root的行
grep “ r..d” /etc/passwd
查找r和d之间的两个字符的行
grep “[^s]bin” /etc/passwd
查找出bin前面不是s的行
grep “^$” /etc/passwd
查找出空白行
grep “t[es]” /etc/passwd
查找出包含字符te或者ts的行
grep “0\{1,\}” /etc/passwd
查找出数字0出现1次或以上的行
grep -e “root” -e “sshd” /etc/passwd
查找出root和sshd的行 -e参数查找多个模式grep “[^a-z]ae” /etc/passwd
查找出前面不是小写字母的行
grep “^[a-z]ae” /etc/passwd
查找出前面是小写字母的行注:小写之母是[a-z] 大写字母是[A-Z] 数字是[0-9]
grep “.m” /etc/passwd
查找出m前面有任意字母的行
grep -e -v “^#;¥” /etc/passwd
查找出文件中以空白行和$开头的行
grep -e -v “^#” -e “^$” /etc/passwd grep “o*” /etc/passwd
查找有o的所有内容
egrep工具
egrep 0+ /etc/passwd
查找至少包含一个0的行
egrep “(root|ntp)” /etc/passwd
查找包含root或者ntp的行
egrep “ro?t” /etc/passwd
查找rt或者rot的行
egrep -v “^$|^#” /etc/passwd
查找文件中空白行与#开头的行,没有空白行与#行开头的行所以没有任何输出
sed工具
语法命令:
sed -e “编辑指令”文件1文件2… 注:-e,在”编辑命令”中可用”;”来分割执行命令
sed -n -e “编辑指令”文件1文件2… -n只显示过滤内容
sed -i -e “编辑指令” 文件1文件2… -i:流编译器,读取一行处理一行
sed命令格式:
sed命令格式:编辑命令格式:[地址1,[地址2]]操作[参数]
“地址”,可数字,正则表达式、$,如果没有地址代表是所有行
“操作”,可以是p、d、s、r、w、i、等
“参数”, 一般有g 代表只要符合条件的全部进行处理(g 全部)
常用操作:
p:输出制定的行
d:删除指定的行
s:字串替换、格式:”行范围
s/旧字符串/新字符串/g”
r:读取指定文件
w:保存为文件
i:插入,在当前行前面插入一行或多行
sed正文
sed -n ‘p’ /etc/passwd 将所有内容输出
catsed -n ‘7p’ /etc/passwd 将第7行内容输出
sed -n ‘$p’ /etc/passwd 将最后一行输出
sed -n ‘1,7{p;n}’ /etc/passwd 将1~7行中的奇数行输出
sed -n ‘1,7{n;p}’ /etc/passwd 将1~7行中的偶数行输出
sed -n ‘1,+4p’ /etc/passwd 从第一行,连续四行进行输出
sde -n ‘/root/p’ /etc/passwd 将匹配包含root的行进行输出
sde -n ‘10/nom/p’ /etc/passwd 将从第十行至的一个包含nom的行进行输出
sed -nr ‘/ro{1,}t/p’ /etc/passwd 匹配不少于1次前导字符0,加-r参数支持扩展正则表达式rot root
sed -n ‘/root/=’ /etc/passwd 将包含root所在的行号输出1, “=”用来输出行号
sed -n ‘/root\|ntp/p’ /etc/passwd 输出包含root或者ntp的行 注:如果遇到特殊符号,扩展正则需要转义符 “\”
sed -e ‘5q’ /etc/passwd 输出前五行信息后退出,q退出
sed -e ‘5q ; 7p;9p’ /etc/passwd 输出前五行、七行、九行信息插入符合条件的行:sed ‘root/i admin:x:490:490::/:/sbin/nologin’ /etc/passwd 在包含root行的前面一行插入admin:x:490:490::/:/sbin/nologin
sed ‘root/a admin:x:490:490::/:/sbin/nologin’ /etc/passwd 在包含root行的下一行插入admin:x:490::/:/sbin/nologin
sed ‘3aADMIN0 /etc/passwd’ 在第三行之后插入ADMIN删除符合要求的行:
sed ‘1d’ /etc/passwd 删除第一行
sed ‘$d’ /etc/passwd 删除最后一行
sed ‘/^$/d’ /etc/passwd 删除所有内容
sed ‘2,4d’ /etc/passwd 删除2到4行
sed ‘root/d’ /etc/passwd 删除包含root的行
sed ‘root/!d’ /etc/passwd 删除不包含root的行,i表示取反操作
sed ‘^root/d’ /etc/passwd 删除以root开头的行
sed ‘^nologin$/d’ /etc/passwd 删除以nologin结尾的行 替换符合条件的文本
sed ‘s/root//g’ /etc/passwd 将文件中所有的root都替换成空 g替换所有 s全部内容sed -n ‘s/root/c admin:x:490:490::/:/sbin/nologin’ /etc/passwd 将含有root的行替换成admin:x:490::/:/sbin/nologin
sed -n ‘s/root/admin/2p’ /etc/passwd 把每行的第二个root替换成admin
sed ‘/root/s /root/ROOT/g’ /etc/passwd 将包含root的所有行中的root都替换为ROOT
sed ‘1,3s/bin/BIN/g’ /etc/passwd 将第1~3行中所有bin替换为BIN
sed ‘s/$/ABC/’ /etc/passwd 在每行行尾插入字符串ABC
sed ‘s/^/#/’ /etc/passwd 在每行行首插入#号
sed ‘root/s/^/#/’ /etc/passwd 将包含root的行的行首插入#号
sed ‘1cABC’ /etc/passwd 将第一行替换为ABC
sed ‘y/root/ROOT/’ /etc/passwd 将root对应替换为ROOT y: 对应替换
sed ‘/1,10v/root/ROOT/’ /etc/passwd 将第1~10行中的root对应替换为ROOT 迁移符合条件的文本:
sed ‘15,16 wout.txt’ test.txt 另存为
sed ‘5r /etc/reslov.conf’ test.txt 将第五行读入到1/etc/reslov.conf
sed ’1,5{H;d};$G’ test.txt 将第1~5行内容迁移至末尾注:H 复制到缓存区 G 追加到制定行后
sed ‘/^IP/s/^/#/’ test.txt 在以IP 开头的行的行首插入#
sed ‘1,5H;15,16G’ text.txt 执行多次命令
sed -ne ‘s/root/admin/’ -ne ‘s/bash/sh/p’ /etc/passwd 将root和bash动作替换直接修改文件内容: 有-i直接修改源文件,保存修改后的文件
sed -i ‘s/^/#/’ /etc/passwd 在每行开头插入#号,直接修改原文件