- 论坛徽章:
- 4
|
本帖最后由 robinhappiness 于 2015-09-24 16:15 编辑
shell脚本,详细如下!
$cat /home/read.csv
#data A
filename,systemName,countA,countB
A00001,AAAA,1,
A00002,BBBB,2,
A00003,CCCC,3,
countA的件数在/csvA下取得
wc -l /csvA/A00001-20150901-001
wc -l /csvA/A00002-20150902-002
wc -l /csvA/A00003-20150903-003
countB的件数在/countcsvA下取得。
wc -l /countcsvA/A00001.csv
wc -l /countcsvA/A00002.csv
wc -l /countcsvA/A00003.csv
想得到的输出文件result.csv的格式是
#data A
filename,systemName,countA,countB
A00001,AAAA,1,4
A00002,BBBB,2,5
A00003,CCCC,3,3
单独在终端下执行如下命令,正常通过。
$ awk 'function get(dir,file,line){cmd="wc -l "dir"/"file;cmd|getline line;close(cmd);return(line+0)}BEGIN{FS=OFS=","}{if(!p){print;if($1=="filename")p=1;next}print $1,$2,get("/csvA",$1"*"),get("/countcsvA",$1".csv")}' read.csv
#data A
filename,systemName,countA,countB
A00001,AAAA,1,6
A00002,BBBB,2,4
A00003,CCCC,3,5
----------------------------------------------
如果定义变量
sendpath="/csvA"
receivepath="/countcsvA"
写在shell脚本中,cat test.sh
---------------------------------------
#!/bin/bash
sendpath="/csvA"
receivepath="/countcsvA"
$ awk 'function get(dir,file,line){cmd="wc -l "dir"/"file;cmd|getline line;close(cmd);return(line+0)}BEGIN{FS=OFS=","}{if(!p){print;if($1=="filename")p=1;next}print $1,$2,get($sendpath,$1"*"),get(receivepath,$1".csv")}' read.csv
---------------------------------------
$./test.sh 执行之后提示
wc: /A00001*: file or directory is not exist
wc: /A00001.csv: file or directory is not exist
wc: /A00002*: file or directory is not exist
wc: /A00002.csv: file or directory is not exist
wc: /A00003*: file or directory is not exist
wc: /A00003.csv: file or directory is not exist
-----------------------------------------------------------
|
|