awk grep sed 混合用法
awk 固定格式 awk ‘{print $NF}’ $NF文件中最后一个 倒数第二个为 NF−1还可以在NF之前加 各种符号
awk -F : ‘{}’ -F:表示以:分割
awk ‘{print NR $1,$2,$3}’ +文件名 显示前三列以及行号
awk ‘{print NF “\t” $0}’ coins.txt 打印出文件的内容并且显示出每行有多少列 注意 awk 默认是以空格分隔 ,每行有空格数+1列
awk ‘$31986 {print NF “\t” $0}’ coins.txt 打印出第三列为1986 的行数
awk '$31986,$1==“gold” {print NF “\t” $0}’ coins.txt 打印出第三列为1986并且第一行为gold的行,如果不是数值型需要加上双引号“”
awk ‘{print $1,$2}’ 后面不跟文件名 表示由用户输入然后按照要求打印出第一,二列默认还是以空格分隔 如果用户输入的列数多余两列则只打印前两列
awk ‘{print $2,$1}’ 和上面一句相反打印 其他同上
awk ‘BEGIN{FS=",";OFS=",’} {print $1,$2}’ 改变系统默认的以空格分隔 使用逗号分隔, BEGIN为全局变量的定义,FS为内部变量用来定义当前所用的分隔符
FS表示输入分隔符,OFS表示输出分隔符,除了数字都要加双引号
awk ‘{print NR "\t"FILENAME $0}’ coins.txt data.txt awk支持多个文件同时操作 只需要在后面加上文件名即可 ,FILENAME表示输出文件名,执行之后会在前文件之后输出
awk ‘{$3=“xxxx”; print NR “\t” FILENAME $0}’ coins.txt data.txt 与上面相比 这句把第三列进行了加密
cat /etc/passwd |awk -F: '$3>=500{print $1 “\t” $7}'打印出passwd中用户UID大于500的用户名和登录shell
cat /etc/passwd |awk -F: '$3>=500 && $7=="/bin/bash" {print $1 “\t” $7}‘打印出passwd中用户UID大于500的用户名和登录shell并且是普通用户
cat /etc/passwd |awk -F: ’ BEGIN{print “查询的结果是:”}$3>=500 && $7=="/bin/bash" {print $1 “\t” KaTeX parse error: Expected 'EOF', got '}' at position 2: 7}̲ END{print "嗯,是…" |awk ‘{print $5}’|sed ‘s/%//g’ 打印出内存使用情况 sed是多余的只是为了去掉百分号
awk ’ NF>2{ print NR “\t” NF “\t” $0}’ file.txt 打印出file文件内 字符数大于2的行以及行号
route -n |awk 'NF!=1{print }'打印出网关信息不显示第一行
awk -F: ‘/root/’ /etc/passwd 找出root用户
awk -F: ‘!/root/’ /etc/passwd 找出不是root的用户
awk ‘{ if(KaTeX parse error: Expected group after '^' at position 4: 0~/^̲/)print NR }’ file.txt 打印出文件中的空行的行号 ~匹配的意思 ^$ 代表空行
awk -F: ‘{if($3>100)print “LARGE”;else print “SMALL”}’ /etc/passwd 用户UID大于100显示LARGE 小于100显示 SMALL
cut
cut是一个选区命令,就是讲一段数据经过分析,取出我们想要的。一般来说选取的信息是真的对“行”来进行分析的,并不是整篇信息的分析
-b 以字节分隔 一个字母一个字节
-c以字符分隔 一个汉字一个字符
-d自定义分隔符,默认为制表分隔符
-f与-d 一起使用,指定显示哪个区域
tail -3 /etc/passwd |cut -b 3,9-12 显示passwd 文件的后三行中的第3个字节和9-12字节
cut 有哪些缺陷
如果文件的某些域是由若干个空格来间隔的,那么用cut就有点麻烦了,因为cut只擅长“以一个字符间隔”的文本内容
正则表达式
^a在中括号外表示以a开头 $a表示以a结尾 /[^a-z]/表示必须有一个不在a到z范围呢的 /[a*]/表示出现零个a或者多个a ,/[a+]/表示至少要出现一个/[a?]/
表示 a可有可无,/a{3}/表示a必须要出现三次,/a{3,4}/表示a可以出现三次到四次,/ab{3,}c/表示b至少要出现三次,/(ab)+c/表示ab至少要出现两次
ifconfig |grep “inet addr” |grep -v “127.0.0.1”|awk ‘{print $2}’|awk -F"addr:" ‘{print $2}’ 截取ip地址
ifconfig |grep “inet addr” |grep -v “127.0.0.1”|awk ‘{print $2}’|awk -F"addr:" ‘{print $2}’|awk -F. '{print $1"-"$2"-"$3"-"KaTeX parse error: Expected 'EOF', got '}' at position 2: 4}̲' 打印ip并把.换成-
…"| awk ‘{print $5}’| sed ‘s/%//g’ 打印出CPU使用情况