grep工具
文本处理 | 说明 |
---|---|
grep -c ‘str’ /tmp/test | 打印符合要求的行的数目。 |
grep -i ‘str’ /tmp/test | 输出符合要求的行,忽略str大小写。 |
grep -n ‘str’ /tmp/test | 输出符合要求的行及行号。 |
grep -v ‘str’ /tmp/test | 输出不符合要求的行。 |
grep -A2 ‘str’ /tmp/test | 输出符合要求的行以及下面2行。 |
grep -B2 ‘str’ /tmp/test | 输出符合要求的行以及上面2行。 |
grep -C2 ‘str’ /tmp/test | 输出符合要求的行以及上下各2行。 |
grep ‘str’ /tmp/test | 在文件 ‘/tmp/test’ 中查找 "str"并打印显示。 |
grep ‘^str’ /tmp/test | 在文件 ‘/tmp/test’ 中查找以 “str” 开始的行并打印显示。 |
grep ‘[0-9]’ /tmp/test | 查找 ‘/tmp/test’ 文件中所有包含数字的行并打印显示。 |
grep -v ‘[0-9]’ /tmp/test | 查找 ‘/tmp/test’ 文件中所有不包含数字的行并打印显示。 |
grep ‘[^0-9]’ /tmp/test | 查找 ‘/tmp/test’ 文件中所有非纯数字的行并打印显示。 |
grep ‘^ [^0-9]’ /tmp/test | 输出不以数字开头的行,^[0-9]表示以数字开头的行,[^0-9]表示除0-9之外的字符)。 |
grep ‘r..t’ /tmp/test | 输出r和o之间有两个任意字符的行,(.表示任意字符)。 |
grep ‘c*’ /tmp/test | 输出含有0个或多个字符c的行,(*表示0个或多个前面的字符)。 |
grep ‘o\{2\}’ /etc/passwd | 符号{}里的数字表示前面字符o要重复2次。 |
grep ‘o\{1,3\}’ /etc/passwd | 符号{}里的数字表示前面字符o要重复的次数,{1,3}表示o重复1次到3次。 |
grep str -r /tmp/* | 在目录 ‘/tmp’ 及其子目录中查找 “str”。 |
grep -v ‘^#’ /etc/inittab |grep -v ‘^$’ | 过滤掉所有以#开头的行和所有空行(#表示行的开始,KaTeX parse error: Expected group after '^' at position 14: 表示行的结尾,空行可以用'^̲'表示)。 |
egrep ‘ao+’ /etc/passwd | 输出一个或多个含有前面的字符o的行。 |
egrep ‘rao?’ /etc/passwd | 输出0个或1个含有前面的字符o的行。 |
egrep ‘root | 11 | 99’ /etc/passwd | 输出含有字符串‘root’或‘11’或‘99的行。 |
egrep ‘r(oo)+ | (oper)’ /etc/passwd | 用‘()’表示一个整体,(oo)+表示一个或者多个‘oo’。 |
sed工具
命令 | 功能 |
---|---|
sed -n 'n’p file | 打印file文件第n行内容,'n’表示第n行。 |
sed -n '1,$'p file | 打印file文件所有行。 |
sed -n '1,3’p file | 打印file文件第1行到第3行。 |
sed -n '/root/'p file | 打印file文件中含有’root’字符串的行,特殊符号^、$、.、*使用同grep。 |
sed -n -e '1’p -e '/root/'p file | 打印file文件第一行和含字符串’root’的行。 |
sed '1’d file | 打印时不显示file文件第一行。 |
sed '2,4’d file | 打印时不显示file文件第2到第4行。 |
sed '/root/'d filw | 打印时不显示file文件中含’root’字符串的行。 |
sed ‘7s@o@x@g’ file | 字符’o’替换成’x’,‘s’表示替换,g表示本行全部替换,不加g只替换本行出现的第一个’o’,’/‘分隔符,也可使用’#’、’@’。 |
sed ‘7,9s/o/x/g’ file | 字符’o’替换成’x’,‘s’表示替换,g表示7到9行全部替换,不加g只替换每行出现的第一个’o’,’/‘分隔符,也可使用’#’、’@’。 |
sed ‘1,$s/[0-9]//g’ file | 打印时不显示file文件中所有的数字。 |
sed ‘s/ \(rot\)\(.*\)\(bash\)/ \3\2\1/’ file | 调换’rot’与’bash’字符串的位置,特殊符号前必须加上脱意字符’’,’()'表示把要替换的字符打包成一个整体。 |
sed ‘s/222/123&/’ file | 在字符串’222’行首加上指定内容’123’。 |
sed ‘s/222/&123/’ file | 在字符串’222’行尾加上指定内容’123’。 |
sed ‘s/^.*$/123&/’ file | 在所有行行首加上指定内容’123’。 |
sed ‘s/^.*$/&123/’ file | 在所有行行尾加上指定内容’123’。 |
sed -i ‘s/ro/ot/g’ file | 修改文件内容,字符串’ro’替换成’ot’。 |
awk工具
命令 | 功能 |
---|---|
awk F ‘:’ ‘{print $1}’ file | 打印截取的文档某段内容,-F作用是指定分隔符,没有-F则以空格或tab为分隔符,$1为第一个字段,$0表示整行。 |
awk F ‘:’ ‘{print $1"%"$2}’ file | 打印截取的文档某段内容,print可以打印自定义内容,但自定义内容要用双引号括起来。 |
awk ‘/ot/’ file | 打印含’ot’字符串的行。 |
awk -F ‘:’ ‘$1~/oo/’ file | 打印第一段含有’oo’ 字符串的行。 |
awk -F ‘:’ '/root/ {print $1,$3} /test/ {print $1,$3} ’ /etc/passwd | 多次匹配,现匹配’root’,在匹配’test’,只打印所匹配的段。 |
awk -F ‘:’ ‘$3>=500’ /etc/passwd | 打印第3段大于等于500的行,500表示数字,"500"表示字符串。 |
awk -F ‘:’ ‘$3<$4’ /etc/passwd | 打印第4段大于第3段的行。 |
awk -F ‘:’ ‘$3>“5” && $3<“7”’ /etc/passwd | 打印第3段大于5并且小于7的行。 |
awk -F ‘:’ ‘$3>“5” || $7=="/bin/bash"’ /etc/passwd | 打印第3段大于5或第7段等于"/bin/bash"的行。 |
awk -F ‘:’ ‘{print NF}’ /etc/passwd | 打印分隔符分隔后每行有多少段,$NF表示最后一段。 |
awk -F ‘:’ ‘{print NR}’ /etc/passwd | 打印行号,NR可作为判断条件。 |
awk ‘NR>20’ /etc/passwd | 打印第20行以后的所有行。 |
awk -F ‘:’ ‘$1=“root”’ /etc/passwd | 打印第一段的值替换成"root"后的文件。 |
awk -F ‘:’ ‘{$7=$3+$4;print $0}’ /etc/passwd | 计算第3段加第4段的和并打印整行。 |
awk -F ‘:’ ‘{(tol=tol+$3)};END{print tol}’ /etc/passwd | 计算并打印第3段的总和,END表示所有的行都已经执行。 |