当前位置: 技术问答>linux和unix
文件名分段循环的shell问题,高手速来
来源: 互联网 发布时间:2017-01-18
本文导语: 2个文件夹,A文件夹里面的文件名是20111112112323-0000004-XXXXXXXX-b309234.dat.Tdat B文件内文件名是20111112102433-XXXXXXXX-XXXXXXXX-0000004.Tdat(这两个文件夹都有很多文件) 说明一下这两类文件的文件名前面是代表一个时间,现在要...
2个文件夹,A文件夹里面的文件名是20111112112323-0000004-XXXXXXXX-b309234.dat.Tdat
B文件内文件名是20111112102433-XXXXXXXX-XXXXXXXX-0000004.Tdat(这两个文件夹都有很多文件)
说明一下这两类文件的文件名前面是代表一个时间,现在要做的是将A文件夹的第二个字段和B文件夹中的第四个字段比较(即00000004和00000004)如果是一样的话,就将那两个时间输出到result目录
20111112112323 20111112102433
....
我这边有比较这两个时间段的脚本了,这个循环应该怎么写,使读一行比较一次,将result的时间点算出差值,导出到新的文件result2.txt
有点复杂,给点思路也行,高手帮帮忙,多谢了
B文件内文件名是20111112102433-XXXXXXXX-XXXXXXXX-0000004.Tdat(这两个文件夹都有很多文件)
说明一下这两类文件的文件名前面是代表一个时间,现在要做的是将A文件夹的第二个字段和B文件夹中的第四个字段比较(即00000004和00000004)如果是一样的话,就将那两个时间输出到result目录
20111112112323 20111112102433
....
我这边有比较这两个时间段的脚本了,这个循环应该怎么写,使读一行比较一次,将result的时间点算出差值,导出到新的文件result2.txt
有点复杂,给点思路也行,高手帮帮忙,多谢了
|
#!/bin/bash
# 两个数组
file1=($(sort -t '-' -k 2 $1))
file2=($(sort -t '-' -k 4 $2))
# 两个数组当前分别在第row行
row1=0
row2=0
# 归并
while true;do
line1=${file1[$row1]}
line2=${file2[$row2]}
if [ ${line1}'x' == 'x' ] || [ ${line2}'x' == 'x' ];then
break;
fi
token1=$(echo ${line1} | cut -d '-' -f 2)
token2=$(echo ${line2} | cut -d '-' -f 4)
token2=$(echo ${token2} | cut -d '.' -f 1)
echo -e "log : token1 : ${token1} t token2 : ${token2}"
if [ "${token1}" "${token2}" ];then
echo "log if_else : >"
let row2=row2+1
else
echo "log if_else : =="
echo -ec $(echo ${line1} | cut -d '-' -f 1)"t" >> $3
echo $(echo ${line2} | cut -d '-' -f 1) >> $3
let row1=row1+1
let row2=row2+1
fi
done
if else 那里判断有问题...你研究研究为什么一样的东西反而判断成不一样了.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。