Shell脚本逐行读取文本内容并拆分,根据条件筛选文件
- 时间:2018-11-13 整理:byzqy
需求:
最近帮朋友写了一段脚本,他的需求是根据一份产品清单,去服务器上捞取对应产品编号的测试Log,数量大概有9000~10000条左右。文本内容大致如下,数据有4列,分别表示:产品编号、员工编号、测试日期、质量等级。需要筛选出质量等级为“1”的产品的测试数据,数据存储在以各自员工编号命名的不同测试日期的文件夹下。log文件名中包含完整产品编号。
文件:adc.txt
1 S0001L0001;TALLYMAN01;20180101;1
2 S0001L0002;TALLYMAN01;20180102;0
3 S0001L0003;TALLYMAN01;20180103;1
4 S0001L0004;TALLYMAN01;20180104;0
5 S0001L0005;TALLYMAN01;20180105;1
6 S0002L0006;TALLYMAN02;20180106;0
7 S0002L0007;TALLYMAN02;20180107;1
8 S0002L0008;TALLYMAN02;20180108;0
9 S0002L0009;TALLYMAN02;20180109;1
10 S00020L010;TALLYMAN02;20180110;0
解决:
1、使用循环逐行读取文本文件;
2、然后再将每一行的文本按照分号(;)进行分割,得到4个参数,分别用来代表拿到的产品编号、员工编号、测试日期、质量等级;
3、根据实际情况设定log存放的目录,并代入我们获取到的参数,必要时可使用通配符。执行查找并复制文件。
脚本:catch_log.sh
1 #!/bin/bash
2
3 FILENAME=abc.txt
4
5 function While_read_LINE(){
6 #读取行内容
7 cat $FILENAME | while read LINE
8 do
9 echo "$LINE"
10
11 #拆分字符串到数组
12 str=$LINE
13 OLD_IFS="$IFS"
14 IFS=";"
15 arr=($str)
16 IFS="$OLD_IFS"
17
18 #遍历回显数组
19 #for s in ${arr[@]}
20 #do
21 #echo "$s"
22 #done
23
24 #为自定义变量赋值
25 PARAM_1=${arr[0]}
26 PARAM_2=${arr[1]}
27 PARAM_3=${arr[2]}
28 PARAM_4=${arr[3]}
29
30 #根据条件执行查找并拷贝
31 if [ "$PARAM_4"x = "1"x ]; then
32 #设定筛选条件
33 SERVER_ADDRESS=/mnt/server/ProductTest/$PARAM_2/FAIL/$PARAM_3/
34 LOCAL_ADDRESS=/home/user/Desktop/result/
35 TARGET_FILE_NAME=$(PARAM_1)_*.txt
36 #执行拷贝
37 cp $(find "$SERVER_ADDRESS" -name "$TARGET_FILE_NAME") $LOCAL_ADDRESS
38 fi
39
40 done
41 }
42
43 While_read_LINE
备注:
1、在Ubuntu16.04上执行该bash文件时,记得要对catch_log.sh添加可执行权限;
2、将abc.txt和bash文件放在同一目录下,否则abc.txt不会被找到;
3、需要在Desktop上手动创建result文件夹,否则cp文件时找不到路径会报错;
4、使用方法是打开终端(Terminal),然后将catch_log.sh拖进去,然后按下回车键执行。
--the end--
Shell脚本逐行读取文本内容并拆分,根据条件筛选文件的更多相关文章
- 【转】shell脚本中echo显示内容带颜色
shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e.格式如下: echo -e "\033[41;36m something here \033[0m&qu ...
- shell脚本中echo显示内容带颜色
转自:http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要 ...
- js读取文本内容,支持csv.txt
js读取文本内容,支持csv.txt <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- shell脚本实现读取一个文件中的某一列,并进行循环处理
shell脚本实现读取一个文件中的某一列,并进行循环处理 1) for循环 #!bin/bash if [ ! -f "userlist.txt" ]; then echo &qu ...
- 【转】shell脚本中echo显示内容带颜色的实现方法
shell脚本中echo显示内容带颜色的实现方法 shell脚本里使用echo输出颜色
- Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件
本文通过Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件,代码如下: import java.io.File; import java.io.IOException; import ...
- Shell 读取文本内容
在Linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的脚本里的方法,而且是效率最高,使用最多的方法.为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率. ...
- python逐行读取文本
一.使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. 二.需要导入import os 三.下面是逐行读取文件内容的三种方法: ...
- 2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出
有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccc ...
随机推荐
- 【字符串+排序】宇宙总统 luogu-1781
题目描述 地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统. 分析 给字符串排个序. AC代码 #include & ...
- 浅析线程池 ThreadPoolExecutor 源码
首先看下类的继承关系,不多介绍: public interface Executor {void execute(Runnable);} public interface ExecutorServic ...
- 破解网站码验证,Java实现,不调用任何平台api接口
package image.images; import java.io.File; import java.io.IOException; import java.io.InputStream; i ...
- Vue学习笔记(二)动态绑定、计算属性和事件监听
目录 一.为属性绑定变量 1. v-bind的基本使用 2. v-bind动态绑定class(对象语法) 3. v-bind动态绑定class(数组语法) 4. v-bind动态绑定style(对象语 ...
- 仅用CSS实现图片渲染特效 (有学习到了)
前言 实现图片高亮效果等特效,就不得不提到CSS3的滤镜filter属性,CSS过滤器是一个强大的工具,可以使用它来实现不同的视觉效果(有点像浏览器的Photoshop过滤器).CSS filter属 ...
- 手动实现instanceof函数
instanceof 功能 a instanceof b 官方解释为检查构造函数b的prototype 有没有出现在a的原型链上.比如: function A() { } function B() { ...
- 树莓派压力测试工具S-Tui + Stress的使用
压力测试工具S-Tui + Stress的使用 树莓派# 背景故事 打算测试一下树莓派外壳的散热性能,需要能压满CPU100%,同时显示温度.CPU频率.CPU占用率,那么这款工具你值得拥有. 软件介 ...
- 记录一次mysql的安装之旅
mysql作为日常开发中常用到的数据库,对每个程序员来说至关重要,今天就跟着我来进行一次mysql的安装之旅吧. 一.安装 1.安装包的方式 1.1.获取安装包 对mysql有过接触的人来说,都知道m ...
- 作为有经验的程序员如果不懂Lambda表达式就说不过去了吧,建议收藏!!!
最近刚好有空给大家整理下JDK8的特性,这个在实际开发中的作用也是越来越重了,本文重点讲解下Lambda表达式 Lambda表达式 Lambda 表达式,也可称为闭包,它是推动 Java 8 ...
- wait_time参数
1.未修改的 wait_timeout 的初始值是28800,单位为秒,等于8个小时 2.wait_timeout过大有弊端,其体现就是mysql里有大量的sleep进程无法及时释放,拖累系统性能 但 ...