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 ‘$3==1986 {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并且是普通用户