#,,,,,,,,,,
#,,,,
# 生成完整的Json格式文件“0325.txt-tmp”
="{\"\":\"%s\",\"\":\"%s\",\"\":\"%s\",\"\":\"%s\" ,\"\":\"%s\",\"\"
:\"%s\",\"\":\"%s\",\"\":\"%s\",\"\":\"%s\",\"\":\ "%s\",\"\":\"%s\",\"KA
\":\"%s\",\"\":\"%s\",\"\":\"%s\",\"\":\"%s\"}\n"
cat$input|gawk-v =$-v =$-F',''{
如果(NF==14){
= 1 美元;
=$2;
=3美元;
= 4 美元;
gsub(" ",":",);
= 5 美元;
= 6 美元;
= 7 美元;
=8美元;
=9美元;
= 10 美元;
= 11 美元;
= 12 美元;
=13美元;
= 14 美元;
gsub("\r","",);
=“1”;
(,,,,,,,,,,,,
颂歌,,,,)>>;
}'
# 每分钟将Json格式文件“0325.txt-tmp”分割成一个文件,输出到“files”目录下
猫$|gawk-F','-v =$'{
idx=索引($0,"");
如果(idx>0)
时间=($0,idx+13,19);
gsub(/[-:]/,"",时间);
时间=(时间,1,12);
="1"时间".txt";
=“”;
打印($0)>>;
关闭();
}'
# 删除Json格式文件“0325.txt-tmp”
rm -f $
脚本主要分为三个部分:
将CSV格式文件转换为Json格式临时文件; Json格式的临时文件每分钟被分割成一个文件; 删除Json格式的临时文件。
5 脚本分析
5.1 脚本参数传递
输入=$1
=2美元
上面的“$1”和“$2”代表运行脚本文件时传递给脚本文件的两个参数。 分别代表“CSV文件名”和“输出文件目录”。
="{\"\":\"%s\",\"\":\"%s\",\"\":\"%s\",\"\":\"%s\" ,\"\":\"%s\",\"\"
:\"%s\",\"\":\"%s\",\"\":\"%s\",\"\":\"%s\",\"\":\ "%s\",\"\":\"%s\",\"KA
\":\"%s\",\"\":\"%s\",\"\":\"%s\",\"\":\"%s\"}\n"
“”是gawk内部格式化输出函数“”使用的格式化字符串,类似于C、Java等中的格式化输出字符串。“%s”代表字符串占位符。 总共有 15 个“%s”占位符。 “\n”代表换行符。
5.3 gawk传递参数
-v =$ -v =$
在gawk语法的开头,使用“-v”向gawk内部传递参数。 “-v”可以传递参数。
5.4 呆呆分隔符
-F','
“-F”代表自定义字段分隔符,本文中的分隔符为逗号“,”。
5.5 gawk分隔字段编号变量
如果(NF==14){…}
“NF”是gawk的内置变量,表示当前行分隔的字段数。 本文的每一行都有 14 个字段。
5.6 获取分隔字段
= 1 美元;
=$2;
=3美元;
“$1”、“$2”、“$3”分别表示分离后的第一字段、第二字段、第三字段。 “$0”代表当前行的内容。
5.7 gawk内部字符串替换
gsub(" ",":",);
gsub("\r","",);
gsub(/[-:]/,"",时间);
“gsub”函数表示字符串替换。 gsub第一个含义是用冒号“:”替换“”中的空格“”,第二个gsub含义是用空字符串替换回车符。gsub第三个含义是去掉“-”和时间字符串中的“:”字符,将其由“2017-03-25:00:47:29”格式转换为“229”格式。需要注意的是,gsub函数的第三个参数用作目标字符串,替换后的值仍然存储在该参数中。
5.8 格式化输出
(,,,,…,)>>;
“”是字符串格式化输出函数。 第一个参数为格式化字符串,后续参数与格式化占位符“%s”一致。 “>>”表示格式化输出的内容将被重定向并追加到文件“”中。
5.9 字符串搜索
idx=索引($0,"");
“index”是gawk字符串搜索函数,返回起始字符下标(最小从1开始)。 如果返回0,则表示没有匹配。
5.10 截取子串
时间=(时间,1,12);
“”是gawk字符串截取函数。 第二个参数是起始位置下标,第三个参数是截取长度。
5.11 文件追加和关闭
打印($0)>>;
关闭();
“>>”表示文件追加,“close”是gawk文件关闭功能。
掌握了gawk强大的文本处理能力,能够快速高效地完成各种数据处理和数据分析任务。