将here doc输出的内容保存到文件,当文件超过阈值,动态更新文件名
2015-03-06 21:59
423 查看
需求:
1. sqlplus查询结果保存到文件(脚本里我暂用cat代替sqlplus语句),文件名格式 <日期>_ <批号>,批号范围0000-9999;
2. 当文件大于2M自动替换文件名(批号部分加1),分割时要求保证数据完整性。
我理解用sqlplus可以直接实现,但是我不会,只好用shell。
一开始我准备用split命令来按大小分割(split -d -b 2M -a 4)查询结果的,但是发现它分割的结果,查询结果内容可能会被截取,不符合需求。
收到chinaunix上jason680 的启发,我已经用 split -d -C 2M -a 4 /tmp/data [prefix] 实现了该功能,再次感谢他。
$ man split
NAME
split - split a file into pieces
...
-b, --bytes=SIZE
put SIZE bytes per output file
-C, --line-bytes=SIZE
put at most SIZE bytes of lines per output file
1. sqlplus查询结果保存到文件(脚本里我暂用cat代替sqlplus语句),文件名格式 <日期>_ <批号>,批号范围0000-9999;
2. 当文件大于2M自动替换文件名(批号部分加1),分割时要求保证数据完整性。
#!/bin/bash #assume the threshold of the file size is 4byte threshold=4 date=`date +%Y%m%d` #batch num count=0 func () { myline=$1 file_name=${date}_$(printf "%04d" $count) echo $myline >> $file_name size=$(du -b $file_name | awk '{print $1}') if [ $size -ge $threshold ];then ((count++)) fi } cat | while read line; do func $line; done <<EOF 1 2 3 4 5 6 7 8 9 0 EOF
我理解用sqlplus可以直接实现,但是我不会,只好用shell。
一开始我准备用split命令来按大小分割(split -d -b 2M -a 4)查询结果的,但是发现它分割的结果,查询结果内容可能会被截取,不符合需求。
收到chinaunix上jason680 的启发,我已经用 split -d -C 2M -a 4 /tmp/data [prefix] 实现了该功能,再次感谢他。
$ man split
NAME
split - split a file into pieces
...
-b, --bytes=SIZE
put SIZE bytes per output file
-C, --line-bytes=SIZE
put at most SIZE bytes of lines per output file
相关文章推荐
- 输入文件名及路径创建该文件,并把从键盘输入的内容保存到该文件,最后将该文件的路径、该文件名及文件中的内容输出到屏幕。
- Matlab矩阵处理小结(4)-批量将矩阵保存到不同的文件--动态更新文件名
- 如何将tomcat控制台输出的内容直播用日志文件保存起来
- 如何将tomcat控制台输出的内容直播用日志文件保存起来(Log4j)
- System.out.println将内容输出到文件保存
- 如何将tomcat控制台输出的内容直播用日志文件保存起来
- 通过文件内容,输出符合条件的文件名
- 编程题:输入文件名,输出该文件的内容。fgetc(fp)的使用。
- linux grep 查找 匹配 内容的文件 且 输出 文件名
- 第四单元 输出重定向及文件名 / 文件内容的字符搜索
- awk更新现有文件内容并输出到新文件中
- vc把文字内容存成word文件和把doc文件保存为txt格式
- Android 线程池及多线程下载,Progressbar动态更新以及文件保存sd卡
- doc命令,将生成的内容保存到指定文件中
- java--解决文件输出流保存内容无中文时文件编码为ANSI格式不是utf-8
- python 将print输出的内容保存到txt文件中
- 终端内容输出的同时保存到文件 tee
- Android 线程池及多线程下载,Progressbar动态更新以及文件保存sd卡
- 用文件流读取、输出和保存文件内容[抛弃新浪博客啊]
- 一个文件中保存一首唐诗,用字符流流进行复制,复制到新文件中的诗,所有的内容倒序输出。