问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux脚本用awk处理两个文件写入mysql数据库

发布网友 发布时间:2022-05-02 13:01

我来回答

4个回答

懂视网 时间:2022-05-02 17:22

  话说Linux处理文本工具有三剑客,awk、grep、sed,其中awk最为厉害,grep也挺是常用。今天就来说一说awk,并结合mysql应用。

1.语法

 

 

awk ‘{[pattern] action}‘ {filenames}

  用法有很多种,但是语法总结可以写成这样,分两个部分:pattern (条件)  + action(处理动作)。

  pattern表示 awk 在数据中查找的内容,是一些正则表达式或条件判断,这个选项也可以省略。

  action是指在匹配到内容后,要执行的命令。

2.awk原理

 

 

  通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。

  具体过程可以用这样的伪代码来描述

While(还有下一行) {
 1:读取下一行,并把下一行赋给$0,各列赋给$1,$2...$N变量
 2: 用指定的命令来处理该行
}

  下面看一个例子:city.txt文本中有5行2列数据

[root@021rjsh216086s ~]# cat city.txt 
BJ 010
SH 021
TJ 022
HZ 0657
ZZ 0371

  执行awk相关命令

[root@021rjsh216086s ~]# awk ‘{print $0}‘ city.txt     #$0表示一行的所有列
BJ 010
SH 021
TJ 022
HZ 0657
ZZ 0371
[root@021rjsh216086s ~]# awk ‘{print $1}‘ city.txt     #$1表示一行的第一列
BJ
SH
TJ
HZ
ZZ
[root@021rjsh216086s ~]# awk ‘{print $2}‘ city.txt     #$2表示一行的第二列
010
021
022
0657
0371

  再看第二个例子,city.txt 以竖线为分隔符。想要把数据分开,便用-F参数。

[root@021rjsh216086s ~]# cat city.txt 
BJ | 010 | a
SH | 021 | b
TJ | 022 | c
HZ | 0657| d
ZZ | 0371| e

 [root@021rjsh216086s ~]# awk ‘BEGIN{FS="|"} {print $1}‘ city.txt  #或 awk -F"|" ‘{print $1}‘ city.txt 
 BJ
 SH
 TJ
 HZ
 ZZ

  假如分隔符同时存在多种,竖线,问好,逗号。-F参数可以指定多个。 

[root@021rjsh216086s ~]# cat city.txt 
BJ | 010 ? a
SH | 021 ? b
TJ | 022 , c
HZ | 0657, d
ZZ | 0371, e
[root@021rjsh216086s ~]# awk -F ‘[|?,]‘ ‘{print $1,$2,$3}‘ city.txt #同时指定三个分隔参数
BJ 010 a
SH 021 b
TJ 022 c
HZ 0657 d
ZZ 0371 e

 

参考文章:

    Mysql分析-awk+Threads分析状态

    Linux三剑客之awk命令

    Linux awk 命令

    AWK程序设计语言

awk分析mysql状态

标签:target   工具   txt   数据   pat   部分   linux三剑客   逗号   sdn   

热心网友 时间:2022-05-02 14:30

懂awk,知道如何从文件中取出值,但数据库语句不太熟悉,能否给出最终组织的数据库语句?

我只能先写到这里:

#!/bin/sh
sed 's/,/ /' b.txt | awk 'NR==FNR{w[$2]=$1}NR>FNR{sub(".*/","",$1);for(a in w)if($1==a){printf("GROUP=%s,MONEY=%s,WORD=%s\n",a,w[a],$2);break}}' a.txt -

就一条语句。


awk对两个文件的处理,参见我的百度空间中shell分类下的文章《shell - awk - sed》,看看其中的awk章节。

热心网友 时间:2022-05-02 15:48

自己去改写吧:
apache1:~/zhangyan/dingshirenwu # cat aa.txt
/root/d/A01,HELLO
/root/d/A02,world
apache1:~/zhangyan/dingshirenwu # cat bb.txt 
45  A01
221 A02
apache1:~/zhangyan/dingshirenwu # sed 's/,/ /' aa.txt|gawk 'ARGIND==1 {n=split($1,array,"/");a[array[n]]=$2} ARGIND==2{if(a[$2]!="") print $2,$1,a[$2]}' -  bb.txt 
A01 45 HELLO
A02 221 world

追问对,需要截取后3位,如'A01'写入数据库。可能没描述清楚,数据库表中group字段是主键,我需要的脚本是分割文件记录后根据主键查询更新数据库的money和word字段

追答数据已经处理好了,剩下的就用load data local infile导入数据库吧。师兄只能帮你到这里了

热心网友 时间:2022-05-02 17:23

使用shell编程可解决,这个事sql+shell的问题
楼主私下谈谈?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
索尼爱立信Lt22i的狂野飙车的数据包该怎么删掉 小熊的音 飙风二重唱我怎么找不到 河南飙风信息科技有限公司怎么样 散粉和粉饼哪个定妆效果好 新手适合用散粉还是粉饼 手机端PokemonHome ...宝剑出匣耀光明 在匣全然不惹尘 今得贵人携出现 有威有势众人钦 奚惆怅而独悲的上一句是什么 贵州茂兰国家级自然保护区-荷花池地址在哪里? 请问一下拍出来的视频偏绿色,怎么用prcs6调回来呢? Premiere怎么去色处理-Premiere去色处理教程 求几个都是在外面打工的亲友想建立一个微信群,什么群名好 我换了工作,现在厂子人都是我们镇上但是我有了他们微信想建个微信群 怎么删除excel表格的照片,如果快速删除,因为里面有有几百张插入的照片了 excel怎么删除图片 word格式的文章,如何将里面的词“胡萝卜”改为红色空心、二号。(提示:编辑里的查找替换) word字体空心怎么弄 利用word将文字加粗空心红色显示怎么做 相机存储权限怎么打开? 姓钱。。要用中文怎么发音啊 qian的汉字第三声xian的第三声是什么字? qian一声的汉字有哪些? “铅”字有些人说读qian(1声),有些说读yuan(3声),到底谁对啊? qian的汉字是什么? qian的音节是什么? qian声调第一声什么字 qian拼音读法 如何永久关闭win10自动更新? 八七年兔女一生总运势 87年属兔女4月初七生2015运势 1987年农历5月13日出生的女人今年运势 男生送女生玉有什么意义? 买商标的价格是多少? 打印机任务队列中存在多个远程桌面重新定向的打印机打印机文档,导致打印机无法执行打印任务。 羊绒面料 谈谈对针织服装的认识,从以下方面谈:针织服装的分类,特点,用途,组织,和梭织服装相比有什么优缺点 太原市什么地方有售飞利浦38001麦克风? 山西省太原市普国电子城有卖各种麦克风及DJ混音台打碟机的装备吗??或者太原市哪里有卖的..... 太原青龙电脑城有200元左右的创新声卡吗?有便宜点的电容麦克风吗? 苹果升级有什么好处? 手机经常跳出垃圾软件要求安装,有没有高手能处理? 太原哪有卖音响设备的(无线话筒,调音台,音箱,功放等) 沈阳太原街附近有没有卖麦克风线的,,唱歌的那种话筒线。急! excel小数点怎么把0.00改成0? 山西太原附近几个县有哪几家炮厂 太原柳巷娱乐场所 手机一直弹出安装程序 怎么办?是不是中病毒了? 鲁迅先生他会激动的说,真的勇士,敢于面对嘲笑,敢于面对破烂的麦克风,能找到这样的太原最火爆的KTV吗? 苹果手机系统升级有用吗 EXCEL表格 怎么把小数点第二位全为0 太原哪里卖会议话筒海绵罩