mysql - Shell脚本从文件中提取数据

标签 mysql shell sed extract

我刚刚开始使用 shell 脚本进行编程,我有一个如下所示的文件:

stuff that doesn't matter
doesn't matter
matter

*LINE 35*School: xxxxx -> NAME: xxxxx AGE: xxx DESCRIPTION: xxxxxxxxxx
School: yyyyy -> NAME: yyyyy AGE: yyy DESCRIPTION: yyyyyyyyyy
School: zzzzz -> NAME: zzzzz AGE: zzz DESCRIPTION: zzzzzzzzzz
School: aaaaa -> NAME: aaaaa AGE: aaa DESCRIPTION: aaaaaaaaaa
6 lines of stuff after the important information

我的主要目标是将所有这些学生迁移到 mysql 数据库中,我的代码如下所示:

nstudents=(( $(wc -l file | cut -d ' ' -f1) - 41) #41 comes from 35+6
i=1
while [ $i != $nstudents ]
do
$school=[I don't know how to extract school number $i]
$name=[I don't know how to extract name number $i]
$age=[I don't know how to extract age number $i]
$desc=[I don't know how to extract description number $i]
mysql #upload
$i= (( $i + 1 ))
done

我知道要做到这一点,我需要使用 sed 或类似的东西,但我只是不知道如何使用。提前致谢。

最佳答案

只是为了向您指出一个基于对数据实际情况的最佳猜测的 shell 式解决方案,请尝试这个

cat inputFile
stuff that doesn't matter
doesn't matter
matter

*LINE 35*School: xxxxx -> NAME: xxxxx AGE: xxx DESCRIPTION: xxxxxxxxxx
School: yyyyy -> NAME: yyyyy AGE: yyy DESCRIPTION: yyyyyyyyyy
School: zzzzz -> NAME: zzzzz AGE: zzz DESCRIPTION: zzzzzzzzzz
School: aaaaa -> NAME: aaaaa AGE: aaa DESCRIPTION: aaaaaaaaaa
6 lines of stuff after the important information

awk -F: '/School/{
    gsub(/ -> /, ""); sub(/School/,""); sub(/NAME/,"")
    sub(/AGE/,""); sub(/DESCRIPTION/,"")
    printf("insert into MyTable values (\"%s\", \"%s\", \"%s\", \"%s\")\n",  $2, $3, $4, $5)     
}' inputFile

输出

insert into MyTable values (" xxxxx", " xxxxx ", " xxx ", " xxxxxxxxxx")
insert into MyTable values (" yyyyy", " yyyyy ", " yyy ", " yyyyyyyyyy")
insert into MyTable values (" zzzzz", " zzzzz ", " zzz ", " zzzzzzzzzz")
insert into MyTable values (" aaaaa", " aaaaa ", " aaa ", " aaaaaaaaaa")

如果您喜欢这个,请查看grymoire awk tutorial

IHTH

关于mysql - Shell脚本从文件中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16112965/

相关文章:

shell - 在 ksh 中执行最后一个命令

linux - 如何将一些行移动到文件的顶部?

bash - 从另一个文件中删除包含 ID 的每一行

php - 从 for 循环获取一个数组,并在 PHP 中对该数组使用另一个 for 循环

MySQL 选择与使用复选框选择的类别完全匹配的行

java - 使用MySql在Hibernate中获取lazyLoadException

xml - 为特定标签替换 XML 文件中的值

mysql根据列选择更改日期

shell - Cloudformation 无法识别 UserData 脚本中的 Shell 变量

linux - 压缩命令不起作用