免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3777 | 回复: 0
打印 上一主题 下一主题

[文本处理] 文件的拆分 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2022-10-13 22:05 |只看该作者 |倒序浏览
本帖最后由 inanin 于 2022-10-21 23:57 编辑

附件中有文件T0665465_xx-32.txt每一行都是独立的不存在重复行,
文件的内容如下:
/storage-28-158/FDSF/x-T0665465-21173890
/storage-28-158/FDSF/x-T0665465-21173891
/storage-28-158/FDSF/x-T0665465-21173895

文件t1.txt内容如下:
192.168.28.170 451.1 5
192.168.28.172 451.1 5
192.168.28.174 451.1 5
192.168.28.134 305.6 0
192.168.28.140 320.2 5
192.168.28.173 394.7 4

文件ts.sh为一个模板文件,内容大概如下:
#! /bin/bash
sfds=dfdsfa
sdfd=/sfds/fdsfdsf
fdsfads_cSDSe=/stDSd/
fdsaf=/dsfsaf/AAA.txt
sbw=DSFSAFM
teSmDDSpFDFSAFfifo=$$.fiFDSDSAfo
trap "exSDec 10>&-;exec 10<&-;exit 0" 2
mDSkfifo $tempfDFSAifo
exeDSSDc 10<>$tempDFSFfifo
SDFSAAS
{
sDSFAF
sDSFAS
DSFDSF
} &

需求如下:

1、根据t1.txt的第二列和第三列计算得到第四列,生成t2.txt,内容如下:
192.168.28.170 451.1 5 14243
192.168.28.172 451.1 5 14243
192.168.28.174 451.1 5 14243
192.168.28.134 305.6 0 6040
192.168.28.140 320.2 5 10063
192.168.28.173 394.7 4 12474

t2.txt第四列计算规则如下:
170、172、174、140、173的行其第四列的计算方法相同,如下:
14243=451.1*1024*1024/(32*1024+74)-5*1024*1024/(32*1024+74)

134的行即第三列标为0的行其第四列计算方法,如下:
6040=71306-14243-14243-14243-10063-12474

备注:t1.txt文件中第三列被标记为0的只有一行,32从T0665465_xx-32.txt文件名中截取
      如果是32则+74,如果为64则+174, t2.txt第四列的计算结果取整(t1.txt标为0的行除外)
      71306为T0665465_xx-32.txt的行数

2、根据t2.txt的第一列和第四列拆分T0665465_xx-32.txt文件如下:
28-170_14243.txt
28-172_14243.txt
28-174_14243.txt
28-134_6040.txt
28-140_10063.txt
28-173_12474.txt

备注:28-170和14243组成28-170_14243.txt文件名,14243为拆分的行数,无需关注文本行的内容。
      拆分前使用t1.txt的IP前缀(只有一种IP前缀)将T0665465_xx-32.txt文件转换为以下格式:
192.168.28.158/x-T0665465-21173890
192.168.28.158/x-T0665465-21173891
192.168.28.158/x-T0665465-21173895

3、使用ts.sh的内容和t2.txt的第一列和第四列作为文件名生成以下文件:
28-170_14243.sh
28-172_14243.sh
28-174_14243.sh
28-134_6040.sh
28-140_10063.sh
28-173_12474.sh

备注:根据模板文件ts.sh生成的每个.sh的文件都将AAA.txt替换成对应的文件名:
        28-170_14243.sh 替换AAA.txt为28-170_14243.txt
        28-172_14243.sh 替换AAA.txt为28-172_14243.txt

4、截取文件T0665465_xx-32.txt中T0665465创建目录,将2、和3、生成的文件都放在T0665465目录中
     执行方式为./1.awk -v a=665465,通过变量a找到相应的文件,找不到给个提示并退出执行。



T0665465.tar

2.79 MB, 下载次数: 0

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP