shell awk命令

Posted kimbo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell awk命令相关的知识,希望对你有一定的参考价值。

语法:

awk \'{command}\' filename  多个命令以分号分隔

awk \'BEGIN {command1} {command2} END{command3}\'  注意:BEGIN ,END 需要大写

常用变量说明:

FS : 指定分隔符,默认是空格和tab 。 也可以简写 -F ";"

NR: 目前处理的是【第几行】数据 ,文件中的行标

NF: 每一行的列数(段、栏位)

 

例子1:

# 以tab作为分隔符
# print $0 表示打印所有列, $1 表示打印第一列 ,不写默认打印所有列

# 打印所有列,用 -F 指定分隔符 ,$0
awk -F "\\t" \'{print $0}\' zss_test.txt
# 打印所有列,用 -F 指定分隔符
awk -F "\\t" \'{print }\' zss_test.txt
# 打印所有列,用 FS 指定分隔符
awk \'FS=="\\t"; {print $0}\' zss_test.txt

打印结果1:

 

例子2:

##查看文件内容
cat -n zss_test.txt

##NR,NF使用
awk \'FS=="\\t"; {print $1 "\\t rows:"NR "\\t columns:"NF}\' zss_test.txt

##利用NF,打印最后一列
awk -F "\\t" \'{print $NF}\' zss_test.txt

打印结果2:

 

例子3:

##删除指定目录下的所有文件 慎用

ls -l|awk \'{print "rm -fr " $9}\'|sh

例子4:

# 利用printf 格式化输出 %s 字符,%d 整数,%f 浮点 ; 
# %10s 右对齐,长度10,实际长度大于设置长度,按实际长度
# %-10s 左对齐,其他同上

#打印文件内容
cat -n kimbo_test.txt

#打印第二行之后的,列1,列4
awk -F"|" \'NR>=2{print $1,$4}\' kimbo_test.txt
#打印第二行之后的,列1,列4 ,利用printf格式话输出 ,列1左对齐
awk -F"|" \'NR>=2{printf "%-30s\\t%5.2f\\n",$1,$4;}\' kimbo_test.txt
#打印第二行之后的,列1,列4 ,利用printf格式话输出 ,列1右对齐
awk -F"|" \'NR>=2{printf "%30s\\t%5.2f\\n",$1,$4;}\' kimbo_test.txt

##多个命令,可以分号分隔
## 打印第二行之后的,列1,列4 ,利用printf格式话输出 ,列1左对齐
awk -F"|" \'NR>=2{printf "%-30s\\t",$1}; NR>=2{printf "%5d\\n", $4}\' kimbo_test.txt 

打印结果4:

 

例子5:

##begin end 用法

#打印第二行之后的,列1,列4
awk -F"|" \'BEGIN {print "start-->"} NR>=2{print $1,$4} END{print "end"}\' kimbo_test.txt

打印结果5:

 

以上是关于shell awk命令的主要内容,如果未能解决你的问题,请参考以下文章

用awk如何读取shell命令行上的参数(参数可以是带空格的)

Shell去除空格和空行的方法

shell awk 常见命令

shell awk 常见命令

shell中awk及其常用命令

shell命令三剑客之awk命令详解,cut命令,linux里记录行踪(操作记录)