发布时间: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}” ##注意使用转译符即可
以上两种传参方式可以同时使用
3dsMax默认打开方式修改器绿色版 v1.0
3.82G
UltraSnap Pro v4.0.2.0绿色汉化版 多种抓图方式+自定义快捷键抓图
13.68 MB
activesync(电脑数据同步工具)v6.1 中文版
22.72MB
cdr x6(图形设计软件)V16.2.0 中文版
251.8M
cs1.6?(射击类游戏)v1.6 中文版
141MB
fireworks(网页作图软件) v8.0.0.77 中文版
88.4M
ftp上传工具(传输软件)v3.8.2.0 中文版
22.3M
h264播放器(视频播放软件)v6.2.0 中文版
11.2M
vc2005(动态链接库)V0.3.2 中文版
6.63MB
winkawaks模拟器(街机游戏模拟器) V1.62 中文版
2M
ceb文件阅读器下载
42.6M
gghost一键恢复下载
14.5M
ghost11下载
15.8M
hwinfo32下载
10.1M
picture manager下载
19.46 MB
unlocker下载
32.1M
印象笔记下载
122.6M
2020-06-17
使用awk合并空行
什么是木马病毒以及手工清除木马病毒具体方法
机器学习之数据探索——数据质量分析
如何安装Windows XP操作系统
Docker命令行参考(22) – docker pause暂停容器内所有的进程
php apc加速器安装
Zabbix3监控Nginx性能状态
NVIDIA Optimus显卡驱动程序安装方法
NetVista M42 驱动下载及安装方法 for windows XP