DATE,ITEM
2017-11-06 ,01001
2017-11-06 ,01005
2017-11-06 ,01013
---我使用这个脚本----
#!/bin/bash
IFS=,
while read DATE ITEM
do
echo "INSERT INTO DB (DATE, item) VALUES ('$DATE', '$item');"
答案 0 :(得分:0)
以下命令将首先格式化您的输入文件,并替换awk的','选项卡,以便能够正确处理它。
然后awk将开始处理第二行的输出,然后创建插入查询。
sed 's/ ,/\t/g' test.txt | awk '{if(NR>=2) print "INSERT INTO DB (DATE, item) VALUES(\x27"$1"\x27, \x27"$2"\x27);";}' > my_insert_queries.out
您还可以为awk定义另一个字段分隔符:
在awk的命令行中,FS可以指定为
-F <sep> (or -v FS=<sep>)
而不是使用sed来提高处理速度。
awk -F' ,' '{if(NR>=2) print "INSERT INTO DB (DATE, item) VALUES(\x27"$1"\x27, \x27"$2"\x27);";}' test.txt > my_insert_queries.out
答案 1 :(得分:0)
使用awk
清理输入,然后将空分隔值传递给while-loop
,如下所示:
# cat 47153204.txt #note that I have added extra spaces/commas to make things more difficult
DATE,ITEM
2017-11-06,01001
2017-11-06, 01005
2017-11-06, 01013
# awk -F '[ ,]+' 'NR>1{printf "%s\0%s\0",$1,$2}' 47153204.txt |
while IFS= read -r -d '' date time
do
# Use the date & time values to construct the query.
done