统计文件列数:
awk -F '列分隔符' '{print NF}' file | head -n1
查看文件最后一行:
tail -n 1
tail -n1
查看文件夹里所有文件的总行数:
法一:
wc -l *.txt
法二:
COUNT=`find ./ -name "*.txt" | xargs wc -l | tail -n 1 | awk -F " " '{print $1}'`
echo $COUNT
有一个文本count.txt:
16440
5123
635
19693
1
2046
1715
对文本里的多行数字求和:
cat count.txt |awk '{sum+=$1} END {print sum}'
表示$1逐行开始扫描每一行的第一列
cat count.txt | awk '{print $1}'
BEGIN和END的作用是给程序赋予初始状态和程序结束之后执行一些扫尾工作。
任何在BEGIN之后列出的操作(在{}内)将在Unix awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。
例:累计销售文件xs中的销售金额(假设销售金额在记录的第三字段):
$awk
'BEGIN { FS=":";print "统计销售金额";total=0}
{print $3;total=total+$3;}
END {printf "销售金额总计:%.2f",total}' sx
(注:>是shell提供的第二提示符,如要在shell程序Unix awk语句和Unix awk语言中换行,则需在行尾加反斜杠)
在这里,BEGIN预置了内部变量FS(字段分隔符)和自定义变量total,同时在扫描之前显示出输出行头。而END则在扫描完成后打印出总合计。
求目录下所有文件的列数和:
for k in $(ls $dir);do awk -F ' ' '{print NF}' $k|head -n1>>count.txt;done
cat t.txt |awk '{sum+=$1} END {print sum}'
cut取出文件某几列:
cut -d ',' -f 2 file.text
网友评论