您的位置:首页 > 运维架构 > Linux

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

2019-02-22 22:50 1126 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/zhaogang1993/article/details/87886832

背景

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

源码

[code]#!/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字符串操作

  • 求字符串长度
[code]jwllinux@jwlLinux ~ $ str="hello world"
jwllinux@jwlLinux ~ $ echo ${#str}
11
  • 求字符串提取
[code]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 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐