linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件

简介: linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件

linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件


#!/bin/bash
#业务实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
#
#文件名FilePath  文件内容如下  
#bjzhadmin1525416085913/chwj0.jpg,bjzhongh,2018,03
#boangnadmin1523867175489/chwj0.jpg,boang,2018,03
#boangnadmin1523867237581/chwj0.jpg,boangrb,2018,03
#cqdboadmin1523872400061/chwj0.jpg,cqdianb,2018,03
#dhstadmin1530240454562/chwj0.jpg,dahanst,2018,03
#datangadmin1526367335047/chwj0.jpg,datang,2018,03
#feitianadmin1522825520992/chwj0.png,feitian,2018,03
#fenghadmin1524627508674/chwj0.jpg,fenghou,2018,03
#gxadmin1525759701702/chwj0.jpg,gxhyllhz,2018,03
#gzyxnewadmin1523416077332/chwj0.jpg,gzyxnew,2018,03
#gzzqhbadmin1526366655878/chwj0.png,gzzqbmhz,2018,03
#hzjjadmin1542694022549/chwj0.jpg,hangzjj,2018,03
#hzltadmin1526267199291/chwj0.jpg,hangzlt,2018,03
#hzltadmin1526267239897/chwj0.jpg,hangzltds,2018,03


#循环读文件  line的值为每一行的信息
for line in `cat ./FilePath`
do
  #要将$a分割开,先存储旧的分隔符
  OLD_IFS="$line"
  #设置分隔符
  IFS="," 
  #如下会自动分隔 加入数组
  arr=($line)
  #根据数组下标判断文件是否存在
  if [[ ! -f /data/www/flowbilling/${arr[0]} ]];then
    #不存在则记录日志  更改路径为从服务器存放路径  后期手动更改文件名 chwj变量 改为 chfile变量
    echo "/home/www/flowbilling-report/TuikuanIamges/${arr[0]},${arr[1]},${arr[2]},${arr[3]}" >> qvdaoduizhangdan.txt
  #如果文件路径存在,将其放入新路径
  else 
    #创建目录 级联创建           参数代表着   chcode      年份     月份     去掉文件名后的目录
    #/data/www/flowbilling/chsettlement/chcode/年份/月份/filename/chwj变量.文件格式
    mkdir /data/www/flowbilling/chsettlement/${arr[1]}/${arr[2]}/${arr[3]}/${arr[0]%/*} -p
    #复制原文件 到新目录下
    cp /data/www/flowbilling/${arr[0]} /data/www/flowbilling/chsettlement/${arr[1]}/${arr[2]}/${arr[3]}/${arr[0]}
  fi
done

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
23小时前
|
监控 Shell Linux
Linux的Shell脚本详解
Linux的Shell脚本详解
|
1天前
|
存储 监控 安全
深入探索Linux的journalctl命令:系统日志的利器
**journalctl 深入解析:Linux 系统日志的强大工具** journalctl 是 Linux 中用于查询和管理 systemd 日志的命令行工具,与 systemd-journald 配合收集广泛的信息,包括内核消息和服务日志。它提供实时追踪、过滤、导出等功能,如 `-f` 实时监控,`-u` 过滤特定服务日志,`-k` 显示内核消息,`--since` 和 `--until` 选择时间范围。在实际应用中,结合权限管理、日志空间控制和有效过滤,journalctl 成为系统管理员诊断和优化系统的得力助手。
|
4天前
|
存储 Shell 开发者
Shell 数组:灵活操作的秘诀
**Shell 数组简介**:作为基础数据结构,数组在Shell编程中不可或缺。它们存储多个值,下标从0开始。创建如`array=(值1 值2...)`,访问用`${array[index]}`。增删改查及获取长度、拼接数组都有相应语法,例如`unset array[index]`删除元素,`${#array[@]}`获取长度。通过实践这些操作,提升Shell脚本技能。
3 0
|
5天前
|
Linux
Linux 系统日常巡检脚本 干货
Linux 系统日常巡检脚本 干货
8 0
|
6天前
|
Linux Shell 测试技术
Linux服务器测试脚本集合
LemonBench是iLemonrain创作的Linux服务器性能测试工具,能一键检测系统信息、网络、CPU、内存和硬盘性能。
7 0
|
10天前
|
SQL Oracle 关系型数据库
探索 Linux 命令 `db_archive`:Oracle 数据库归档日志的工具
探索 Linux 中的 `db_archive`,实际与 Oracle 数据库归档日志管理相关。在 Oracle 中,归档日志用于恢复,当在线重做日志满时自动归档。管理员可使用 SQL*Plus 查看归档模式,通过 `RMAN` 进行备份和恢复操作。管理归档日志需谨慎,避免数据丢失。了解归档管理对 Oracle 管理员至关重要,确保故障时能快速恢复数据库。
|
10天前
|
存储 关系型数据库 Linux
探索 `db_printlog`:Linux 下的数据库日志打印工具
`db_printlog`是Linux下用于解析和打印Berkeley DB日志文件的命令行工具,帮助用户以可读格式理解数据库事务和系统事件。要使用它,先安装Berkeley DB,然后通过`db_printlog logfilename`命令分析日志。常见选项包括`-h`(显示帮助)、`-v`(详细输出)和`-f`(跟随日志更新)。注意日志文件权限和大小问题,此工具适用于Berkeley DB,其他数据库系统可能有不同解析工具。
|
Linux
Linux批量创建目录
mkdir -p /tmp/test/{1..9}/src
700 0
|
1天前
|
数据挖掘 Linux Perl
Linux命令join:高效处理文本数据的利器
`join`是Linux文本处理的强兵,用于基于共同字段合并两个已排序文件。它按字典序比较字段,支持自定义分隔符,且能处理未匹配行。`-a`显示未匹配行,`-e`指定空字段替换值,`-j`设置共同字段,`-o`定制输出格式,`-t`定义字段分隔符。在数据分析时,务必先排序文件,并根据需求调整参数。可与`sort`、`cut`等命令配合使用。
|
1天前
|
监控 数据挖掘 Linux
Linux命令jobs:后台任务管理利器
`jobs`是Linux终端的利器,用于管理和查看后台任务。它显示当前会话中的作业状态,如运行、停止,可通过`Ctrl+Z`暂停任务,`bg`放后台,`fg`回前台。参数`-l`显示PID,`-n`显示最近状态变化的作业。`jobs`帮助高效监控和管理长时间运行的命令,如在数据分析时。记得使用正确任务编号,谨慎使用`kill`,并定期检查任务状态。

热门文章

最新文章