shell scripts两个文件关键行合并

  • 1.写作意图
  • 2.shell按行读取文件信息
  • 3.提取每行第3列的信息
  • 4.在另一个文件B中查找关键字key
  • 5.字符串非空判断输出
  • 6.关键字key所在的文件A的行内容与所在的文件B行内容合并显示

1.写作意图

有两个文件,分别是文件A和文件B。指定A文件的某些行,并提取关键字key,然后在B文件中查找关键字key所在的行,并把A文件中关键字key所在的行与B文件关键字key所在的行合并起来写到文件C中.这样的小功能如果用C/C++写将变得复杂,那么有没有什么简介的方式呢?答案是肯定的.Linux下的shell scripts提供十分强大的功能.可以通过自带的各种命令小工具cat\grep\cut\awk\tail等等,然后通过管道方式拼接,最后通过shell脚本就可以完成很强大的文本信息搜集与分析功能.话不多说,仅仅把自己会的贡献出来.

2.shell按行读取文件信息

我们从文件decoders的11行开始读取每行的字符串信息,并将其保存到shell的变量line中.

#!/bin/bash
cat decoders|tail -n +11|while read line
doecho $line
done

通过上面的程序,就可以获取文件decoders的每行数据,并将其保存在变量line中,简单的测试一下,果然从11行开始打印.

3.提取每行第3列的信息

对于上面的程序增强一下功能,提取第3列的关键字并打印,如012v\4xm这样的关键字.这里就再次将变量的值通过标准输入流送给cut命令,让该命令完成分割提取工作.最后将提取的结果保存在变量line1

#!/bin/bash
cat decoders|tail -n +11|while read line
doline1=`echo $line|cut -d " " -f 3`echo $line1
done

"|"是管道命令,echo $line将标准输出结果送到cut指令中进行处理,cut -d " " -f 3表示按照空格分割字符串line,并提取第3列的字符串到变量line1中.小小的shell命令,经过管道拼接,真是强大.

4.在另一个文件B中查找关键字key

通过上面的两个步骤,就提取到了关键字line,那么接下来从文件MAINTAINERS中查找关键字line,并将所在的行打印出来.

#!/bin/bash
cat decoders|tail -n +11|while read line
doline1=`echo $line|cut -d " " -f 3`line2=`grep $line1 MAINTAINERS`echo $line2
done

这里果然匹配到关键字4xm所在的行,对于匹配不到的行,将输出空字符串.

5.字符串非空判断输出

#!/bin/bash
cat decoders|tail -n +11|while read line
doline1=`echo $line|cut -d " " -f 3`line2=`grep $line1 MAINTAINERS`
if [ -n "$line2" ];thenecho $line2
fi
done

通过shell的判断语句将非空的结果打印出来

6.关键字key所在的文件A的行内容与所在的文件B行内容合并显示

#!/bin/bash
cat decoders|tail -n +11|while read line
doline1=`echo $line|cut -d " " -f 3`line2=`grep $line1 MAINTAINERS`
if [ -n "$line2" ];thenecho $lineecho $line2
fi
done

到此,一个看似复杂的功能,通过shell就轻松的搞定.
最后通过sh test.sh>C.log输出流重定向到C文件中,C文件保存了合并的结果

shell脚本两个文件关键行合并相关推荐

  1. shell:多个文件按行合并

    paste file1 file2 file3 > file4 file1内容为: 1 2 3 file2内容为: a b c file3内容为: read write add file4内容为 ...

  2. Linux的简单shell脚本中修改文件操作

    Linux的简单shell脚本中修改文件操作 Linux Shell常用技巧(三) sed 八.流编辑器sed 8.1 sed简介 sed是stream editor的缩写,一种流编辑器,它一次处理一 ...

  3. python如何输入多行数据合并_python 实现将txt文件多行合并为一行并将中间的空格去掉方法...

    有一个txt文本如下: 151 151 1234561 156421 214156 1523132 031320 现希望将两行合并为一行,并将中间所有的空格都去掉: (python编程第十章) 代码如 ...

  4. Shell脚本中读取文件每一行的方法总结

    这篇文章主要使用Shell脚本循环读取文件每一行内容的方法总结: 1.使用while循环,效率最高,最常用的方法 while read -r line doecho $line done < f ...

  5. shell脚本 java jar_linux下shell脚本执行jar文件

    最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...

  6. shell上传文件到服务器,shell脚本上传文件到ftp服务器

    shell脚本上传文件到ftp服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器 ...

  7. Shell脚本实战之文件批量创建和修改

    Shell脚本实战之文件批量创建和修改 一.脚本要求 二.脚本内容 三.脚本运行结果 一.脚本要求 1.所有操作在/python下 2.批量创建12个以py后缀结尾的文件,文件名中必须包含_hcip, ...

  8. shell脚本:实现文件覆盖写入、文件内容追加写入

    文章目录 shell脚本:实现文件覆盖写入.文件内容追加写入 实现说明: 重要代码: 1. 覆盖写文件 ">" 2. 追加写文件">>" sh ...

  9. linux定时压缩脚本,使用shell脚本对日志文件进行定时压缩

    系统在服务器上运行时,会产生大量的日志,每天产生的日志量达到几个G,甚至几十个G,这样磁盘空间很快就会满,系统也就挂掉了,所以需要对日志文件进行压缩,压缩之后的日志文件通常只有原文件十分之一,甚至更少 ...

最新文章

  1. 各国家分析之- 阿根廷与乌拉圭
  2. 机器学习理论入门:第二章 经典监督学习算法-决策树
  3. JDBC操作步骤及数据库连接操作
  4. linux 无法访问docker mysql8_Apple M1芯片不支持Docker?Docker:正在努力适配
  5. 解决 Angular 官网下载的库 Schematics 在 windows 环境不支持 .. 的临时解决方案
  6. mysql format row_MySQL之InnoDB存储引擎:Row Format行格式
  7. ***必学的DOS命令
  8. knockoutjs
  9. 网页添加 Live2D 看板娘
  10. ubuntu 解包和压包.img文件
  11. 进阶HTML--认识标签嵌套与并列关系 -----16岁的小前端
  12. 如何在Windows 10 IoT Core中添加其他语言的支持,如中文
  13. 有没有讲python模块的书_python - 模块,包
  14. 百度搜索引擎接口测试报告
  15. 线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)
  16. 软件测试多次点击按钮叫什么方法,常见控件的测试点 - 爱昵容儿 的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  17. perl脚本的简单调试方法
  18. 势流理论 matlab程序,势流理论 1.ppt
  19. 计算机音乐谱牵丝戏,《天谕手游》牵丝戏乐谱代码分享-天谕云之光在哪
  20. 怎么把照片的四个角修成圆形?

热门文章

  1. 1053 Path of Equal Weight(超级无敌详细注释+45行代码)
  2. 打印机无法连接计算机,win7系统下打印机无法连接电脑的解决方法
  3. Ajax学习笔记-动力节点-王鹤老师
  4. 【邢不行|量化小讲堂系列55—实战篇】:币圈庄家教你如何坐庄
  5. 【Excel】Checkbox复选框
  6. 机械革命z2 Air(显卡:nvidia1650)安装Ubuntu16.04.5+NVIDIA1650驱动(430.64)
  7. CTF中的编码与加密题
  8. 〖Python WEB 自动化测试实战篇⑮〗 实战 - 自动化测试的持续集成
  9. win10系统如何将GPT格式动态分区转换为基本
  10. 使用uIP将TUN网卡适配到TAP网卡-tun2tap