Linux实用脚本4:批量统计文件行数&shell 字符串操作

本文介绍如何使用Linux Shell脚本来批量统计CSV格式的文件行数,涉及字符串操作如文件后缀替换及行数统计。通过`ls`获取文件列表,利用`${file/%DAT/CTL}`进行字符串替换,结合`wc -l`计算行数,并用`echo`输出结果。同时,文中还提及了Shell字符串的长度、提取、替换等操作。

背景

         T24银行核心业务系统自带DFE(数据格式化引擎)可以导出相关业务数据(其以XML文件格式存储于ORACLE数据库),导出后形成类似CSV(Comma-Separated Values,逗号分割文件)文件。如今,业务要求批量统计所有导出文件的行数(记录数),因而有此博文。

源码

#!/bin/bash

DIR_PATH="/mnt/bnk/interfaces/SGBDW"
for file in ` ls $DIR_PATH`
do 
    #echo $file
    COUNT_FILE=${file/%DAT/CTL}
    #echo $COUNT_FILE
    LINES=`wc -l $DIR_PATH/$file | gawk '{print $1}'`
    if [ $LINES -gt 0 ]
    then
        echo $file $LINES > $DIR_PATH/$COUNT_FILE
    else
        #echo $file
        :
    fi
done

源码解释

  1. `ls $DIR_PATH`获取文件夹下所有文件;
  2. for语句循环遍历所有文件名;
  3. ${file/%DAT/CTL}使用了shell脚本的字符串替换,字符串$file的后缀匹配子串“DAT”,则将“DAT”替换成“CTL”;有关shell脚本对字符串的操作,请查看扩展字符串章节和参考博文;
  4. wc -l $DIR_PATH/$file | gawk '{print $1}'统计文件的行数(wc -l),使用gwak取第一个字段(行数)并赋值给变量LINES
  5. echo重定向输出统计信息,形成XXX.CTL文件,内容包括XXX.DAT文件名和文件行数。

测试结果

shell字符串操作

  • 求字符串长度
jwllinux@jwlLinux ~ $ str="hello world"
jwllinux@jwlLinux ~ $ echo ${#str}
11
  • 求字符串提取
jwllinux@jwlLinux ~ $ str="hello world"
jwllinux@jwlLinux ~ $ echo ${str:6}
world

说明:从位置6提取子串

  • 求字符串替换

${string/substring/replacement}

使用$replacement, 来代替第一个匹配的$substring

${string//substring/replacement}

使用$replacement, 代替所有匹配的$substring

${string/#substring/replacement}

如果$string前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring

${string/%substring/replacement}

如果$string后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring

参考

         linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值