Bash中用到的文件处理方法记录

Bash中用到的文件处理方法记录

引言

因要在服务器上进行数据分析,于是使用bash shell进行部分文件处理,以及相关程序调用,而收益匪浅。这里主要涉及的是一些操作中用到的文件批量处理,直观感觉非常好用。

批量解压并删除原解压文件

#!/bin/bash
cd 07
ls *.zip | xargs -n1 unzip -o -P infected
rm *.zip

这段脚本实现功能是在名为07/的目录下解压其中的所有zip文件,再解压完成后删除所有zip文件。

批量提交作业

这里说的提交作业是指把程序交给服务器后台跑。

#!/bin/bash
j=0
for i in Intput_absolute_path/*
do
		rm job_${i}.sh
        i="python ../example.py --input "${i}" --output ../Output/calib_"${j}".root"
        echo $i >> job_${j}.sh
        chmod 755 job_${j}.sh
        hep_sub -g juno job_${j}.sh
        printf "job ${j} has been submitted.\n"
        j=`expr $j + 1`
done

上述代码的目的是批量产生job.sh文件并且上交给服务器。代码中对echo的输出重定向至文件job_i.sh中,然后使用chmod命令对该job_i.sh文件赋予权限,后面的hep_sub是我所在服务器的交作业命令,不同的服务器应该是不一样的吧。之所以要在开头删除job_i.sh,是因为echo的输出重定向至文件后会在原有部分后追加,如果原来的job文件没有删除的话会重复执行之前job中的工作。

从log文件中提取批量提取信息

因为在调试期间,程序的部分运行参数输出在了log文件中,如测试时的占用内存,部分运行时间等。所以需要从大量的log文件中提取相关参数进行统计拟合,以确定程序性能。

INFO: ---------------------------Exe. FreshData memory: 1458-------------------------

log文件中有这样一段输出,其中1458是所需要的,之后的bash脚本就是为了从log中提取1458这一数字。

#!/bin/bash
for i in log_path/*
do
        size=$(grep "Exe. FreshData memory:" $i)
        size=$(echo ${size##I* })
        echo $size | sed 's/-------------------------//g' >> exe_fre_size.txt
done

使用for遍历了log_path目录下的所有log文件
for中do下面的第一个语句是取到了log文件中文本"Exe. FreshData memory:"所在的行,此句执行之后的size内容为

INFO: ---------------------------Exe. FreshData memory: 1458-------------------------

接着的

size=$(echo ${size##I* })

删去了字符串size中从最左边的“I”到1458前面的空格,语句中的“##”就是提取字符串从左边开始的最长的匹配,即从最早出现的“I”匹配到最后一个空格,如果换成“#”就是指最短的匹配了,从最早出现的“I”匹配到最早出现的空格。则此句之后的size内容为

1458-------------------------

最后的echo语句是使用sed命令

sed 's/-------------------------//g'

将size中“-------------------------”替换为空,然后重定向输出至txt文件中。

Summary

To be continued…

引用

Bash 字符串操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值