2020-04-22 14:56:21
结合编辑数据文件的shell脚本学习awk传参方式,该脚本功能:
取VIDEOUSR_11082017_0102_ONLINE_STASTIC.dat文件中第87个字段的低8位;将每行数据的第3列和第87列对调;
修改后的数据生成到最新时间戳文件中。
#!/usr/bin/bash
if [[ $# -eq 2 ]];then
srcfile="$1" #文件名
bit=$2 #低bit位
filetimetmp=${srcfile#*_}
filetime=${filetimetmp%%_*} #截取文件中时间戳,日+月+年
realtime=`date +"%d%m%Y"` #生成最新时间戳,日+月+年
let databit="2**$bit" #低bit位对应的值,通过取余截取第低bit位数值
if [[ -f $srcfile ]];then
newfile=${srcfile//$filetime/$realtime} #生成最新时间戳对应的文件
if [[ -f $newfile && $newfilew =~ ".dat" ]];then
rm -rf $newfile
fi
cat $srcfile|sed 's/ /#/'|awk -v mod=$databit -F ',' '{predata=$87%mod;$87=$3;$3=predata;print $0}'|sed 's/ /,/g'|sed 's/#/ /' >>$newfile
##其中sed 's/ /#/'和sed 's/#/ /'是对数据中带有空格时间(2017-08-11 17:30:21)做保护(编辑前空格替换为#看,编辑完后#替换为空格)
fi
fi
调用方式:
sh datatransfomate.sh VIDEOUSR_11082017_0102_ONLINE_STASTIC.dat 8
awk传参:awk -v mod=$databit,之后可以在‘{}’中使用mod变量。
但字段值不能通过变量方式进行修改,即$87和$3如何使用外部变量进行传参。
#!/usr/bin/bash
if [[ $# -eq 4 ]];then
srcfile="$1" #文件名
exchghead=$2 #对应第3个字段
exchgtail=$3 #对应第87个字段
bit=$4 #低bit位
filetimetmp=${srcfile#*_}
filetime=${filetimetmp%%_*} #截取文件中时间戳,日+月+年
realtime=`date +"%d%m%Y"` #生成最新时间戳,日+月+年
let databit="2**$bit" #低bit位对应的值,通过取余截取第低bit位数值
if [[ -f $srcfile ]];then
newfile=${srcfile//$filetime/$realtime} #生成最新时间戳对应的文件
if [[ -f $newfile && $newfilew =~ ".dat" ]];then
rm -rf $newfile
fi
cat $srcfile|sed 's/ /#/'|awk -v mod=$databit -F ',' "{predata=$${exchgtail}%mod;$${exchgtail}=$${exchghead};$${exchghead}=predata;print $0}"|sed 's/ /,/g'|sed 's/#/ /' >>$newfile
##其中sed 's/ /#/'和sed 's/#/ /'是对数据中带有空格时间(2017-08-11 17:30:21)做保护(编辑前空格替换为#看,编辑完后#替换为空格)
fi
fi
调用方式:
sh datatransfomate.sh VIDEOUSR_11082017_0102_ONLINE_STASTIC.dat 3 87 8
awk传参:由于使用了“”,shell会对“”中$进行索引替换,因此需要对部分$进行转译。
awk中“”经过shell处理后会转换:
awk -v mod=$databit -F ',' "{predata=$${exchgtail}%mod;$${exchgtail}=$${exchghead};$${exchghead}=predata;print $0}"
==》awk -v mod=$databit -F ',' ‘{predata=$87%mod;$87=$3;$3=predata;print $0}’
常规使用 -v 即可传参,awk -v innerpara=$outerpara -F ‘,’ ‘{print innerpara,$0}’
通过变量方式传参,awk -v -F ‘,’ “{print $${outerpara},$0}” ##注意使用转译符即可
以上两种传参方式可以同时使用
awk查看统计Nginx访问日志
03-26
使用awk合并空行
06-25
使用sed或awk显示指定行内容
06-26
未经授权修改 UEFI 系统中的 UEFI 变量
04-08
Android按钮单击事件的五种实现方式
04-22
Bash使用示例(2) – 内部变量
04-27
Outlook 2010如何通过搜索的方式快速定位指定内容
06-08
VISTA、XP系统如何切换首选网卡(有线、无线同时连接网络时采用哪种方式上网)
03-24
Windows 7系统下如何更改屏保的显示方式
02-14
Windows 8 的几种关机方式
04-04
Windows 8系统提示:正在扫描和修复驱动器处理方式
05-20
apt方式安装LNMP环境教程(ubuntu17.10|PHP7.1)
04-12
linux字符模式下设置和删除环境变量的方法
05-27
openresty设置用于access_log的自定义变量
02-18
天逸F31、F41预装VISTA系统启动到桌面提示一键恢复是否继续问题及两种解决方案
05-26
如何区分“ACPI”和“APM” 电源管理方式
05-19
如何更改Windows XP登录方式,不使用用户名和密码提示
05-19
按Fn 键从睡眠方式恢复之后,计算机显示器仍为黑屏
03-13
杜比音效介绍及设置方式
03-27
联想小新打印机通过USB连接方式安装本地打印机驱动方法的介绍
02-15
ceb文件阅读器(阅览软件)V4.5.3 中文版
42.6M
下载fireworks(网页作图软件) v8.0.0.77 中文版
88.4M
下载ftp上传工具(传输软件)v3.8.2.0 中文版
22.3M
下载h264播放器(视频播放软件)v6.2.0 中文版
11.2M
下载hwinfo32(系统信息检测工具) v7.05.4490 中文版
10.1M
下载vc2005(动态链接库)V0.3.2 中文版
6.63MB
下载winkawaks模拟器(街机游戏模拟器) V1.62 中文版
2M
下载3dsmax下载
3.82G
下载UltraSnap Pro抓图软件
13.68 MB
下载activesync下载
22.72MB
下载cdr x6下载
251.8M
下载cs1.6下载
141MB
下载gghost一键恢复下载
14.5M
下载ghost11下载
15.8M
下载picture manager下载
19.46 MB
下载unlocker下载
32.1M
下载印象笔记下载
122.6M
下载