存档

文章标签 ‘shell’

awk简明使用

2018年9月12日 没有评论

完整结构:
“`
awk -F”,” ‘BEGIN{sum1=0;sum2=0;sum3=0};{if($3==100 && NR=265){sum1+=$263;sum2+=$264;sum3+=265} fi};END{print sum1,sum2,sum3}’ file_path
“`

格式化后的样子,\是shell中多行脚本的换行,便于和其他语言的逻辑做对比:
“`
# 定义字段分隔符
awk -F”,” ‘ \
#循环开始前的操作
BEGIN{sum1=0;sum2=0;sum3=0}; \
{\
# 遍历日志每行内容进行操作
if($3==100 && NR=265)\
{\
sum1+=$263;\
sum2+=$264;\
sum3+=265\
}\
fi\
};\
#循环结束后输出几个和
END{print sum1,sum2,sum3}\
‘ file_path

“`

其中很多时候BEGIN{}和END{}因为没有实际操作是可以省略
注意:
一般使用完整写法,这样脚本结构相对清晰,容易理解
BEGIN{初始化部分设置}
{遍历每行时的处理逻辑}
END{结束时的输出,以前会输出求和的值}

另外awk的变量,是没有$符号前缀的,注意
只有分割的列会用$1,$2,$3这样的来表示
每个处理语句之间用;分割

awk常用内部变量
NR
NF

参考:

https://jackxiang.com/post/1874/
https://my.oschina.net/wolx/blog/351601
https://blog.csdn.net/xiyangyang052/article/details/45462505

分类: linux 标签: , ,

shell脚本调试技术

2012年8月10日 没有评论

使用trap命令

trap命令用于捕获指定的信号并执行预定义的命令。
其基本的语法是:
trap ‘command’ signal

使用shell的执行选项

-n 只读取shell脚本,但不实际执行
-x 进入跟踪方式,显示所执行的每一条命令
-c “string” 从strings中读取命令

阅读全文…