Awk

Linux文件统计命令awk

2019-01-11  本文已影响5人  会飞的蜗牛07

awk通常用来处理遵循一定格式的文件,例如/etc/passwd

域的概念

域是awk命令操作的基本单元,例如字符串user:name$0表示user:name$1表示user$2表示name。当然,此时的分隔符需要指定为:

echo "user:name" | awk -F : '{print $1,$2}' #输出“user name”

BEGIN/END模式

awk在对文件操作前和后可以增加额外操作,例如

echo "user:name" | awk -F : 'BEGIN{print "begin"} {print $1,$2} END{print "end"}'

默认变量

$0 $1 $2 - 分别表示全域、域1和域2;
NF - 当前行的域总数,需要注意分隔符;
NR - 当前行号;
FILENAME - 当前文件名;
FS/OFS - 分别表示输入分隔符和输出分隔符,需要-v选项;

常用选项

-F - 指定分隔符;
-v - 设置变量值,设置默认变量也需要使用这个选项;

条件判断

和C语言的条件判断格式类似。

# 统计/etc/passwd的行数
awk -F : 'BEGIN{line=0} {line++} END{print line}' /etc/passwd
或者
cat /etc/passwd | wc -l
# 打印第100行指定内容
awk -F : '{if(NR==100) print $1}' /etc/passwd
# 打印第10行内容
awk -F : 'BEGIN{line=0} {if(line==10){print $0;} line++}' /etc/passwd
# 打印前10行内容
awk -F : 'BEGIN{line=0} {while(line<10){print $0; line++}}' /etc/passwd

参考文献
Linux日常之命令awk - https://www.cnblogs.com/jiqianqian/p/7944013.html

上一篇下一篇

猜你喜欢

热点阅读