# 先找到指定字符串aaa的行号
row=`grep -w -n "aaa" txt2 | cut -d ":" -f 1`
# 将txt1中内容写入txt2中指定行之后
sed -i "${row}r txt1" txt2

 

grep

【背景】
grep的全称是global regular expression print,是linux中最强大的文本搜索命令之一,常用于搜索文本文件中是否含有某些特定模式的字符串。该命令以行为单位读取文本并使用正则表达式进行匹配,匹配成功后打印出该行文本。
【命令格式】
grep [option] "string_to_find" filename
常见选项:
(1)-i:忽略搜索字符串的大小写
(2)-v:取反,即输出不匹配的那些文本行
(3)-n:输出行号
(4)-l:输出能够匹配模式的文件名,相反的选项为-L
(5)-q:静默输出
选项是可选的,根据实际需求进行选择即可
string_to_find为需要匹配的模式,可以填写字符串或者正则表达式
filename为需要查找的文件的名称
【常见用法】
1.统计文件中能够匹配的行数
涉及选项:
(1)-c:计算匹配成功的行数
例子:
(1)输出text.txt中含有hello字符串的行的数量:
grep -c "hello" text.txt
2.统计文件中匹配的数量
涉及选项:
(1)-o:只输出匹配到的文本部分
例子:
(1)输出text.txt中含有hello的数量:
grep -o "hello" text.txt | wc -l
注意这个例子和上个的区别,-c选项在遇到一行中多次匹配正则表达式的情况时只是认为这一行匹配成功,而不会计算匹配成功的次数
3.递归搜索
涉及选项:
(1)-r:grep的参数filename为目录时可以加上本选项表示递归搜索
例子:
(1)从test_dir开始递归查找含有hello的行:
grep -r "hello" test_dir
这个选项很适用于在工程中搜索某些特定字符串
4.匹配多个正则表达式
涉及选项:
(1)-e:该选项加上正则表达式就是一个需要匹配的模式
例子:
(1)找出匹配hello或者world的行:
grep -e "hello" -e "world" test.txt
5.指定/排除文件
涉及选项:
(1)--include:指定需要搜索的文件
(2)--exclude:排除需要搜索的文件
(3)--exclude-dir:排除需要搜索的目录
例子:
(1)搜索src目录中.c和.cpp文件中的含有main的行:
grep -r "main" ./src --include *.{c,cpp}
(2)搜索src目录中含有main的行,但不搜索readme文件:
grep -r "main" ./src --exclude "readme"
(3)搜索src目录中含有main的行,但不搜索.git文件夹:
grep -r "main" ./src --exclude-dir ".git"
6.零值字节
涉及选项:
(1)-Z:设定输出的文本之间以'\0'作为分隔符
例子:
(1)删除含有hello字符串的文件:
grep -r "hello" ./src -lZ | xargs -0 rm -f
注意如果不使用-Z选项,则输出的文件名之间以空格符分隔。那么如果有个文件的文件名本身就是包含空格的,则该文件会被认为是两个文件,就可能造成误删

shell txt1写入txt2,并放在txt2中指定字符串的后面的更多相关文章

  1. C#,.net获取字符串中指定字符串的个数、所在位置与替换字符串

    方法一: public static int indexOf (字符串/字符,int从第几位开始,int共查几位) string tests = "1absjjkcbfka2rsbcfak2 ...

  2. sqlserver 删除表中 指定字符串

    源表T "单据编号"               "航班计划日期"        "航班号"          "起飞航站代码&q ...

  3. 删除string类型字符串中指定字符串段

    1.实现背景 在插入list行时用邮件的MessageID给对应行命名. 在回复全部邮件时,收件人变为之前收件人中出去“自己”同时加入之前发件人,抄送人还是之前的抄送人,密送人不用管,直接不用带. 在 ...

  4. 【Linux】查询文件中指定字符串的记录

    语法 cat 文件 |grep 查询字符串 例如现在有文件file.dat,文件中内容如下: zhangsan Lisi wangwu123 wangwu890 zhangsan28290 现在想从文 ...

  5. Python —— 批量替换指定目录下的所有文件中指定字符串

    参考:http://blog.csdn.net/zcwfengbingdongguke/article/details/13951527 代码: #!/usr/bin/python import os ...

  6. Objective-C 【从文件中读写字符串(直接读写/通过NSURL读写)】

    ———————————————————————————————————————————从文件中读写字符串(直接读写/通过NSURL读写) #import <Foundation/Foundati ...

  7. shell中截取字符串的方法总结

    shell中截取字符串的方法有很多种, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...

  8. Java基础知识强化之IO流笔记52:IO流练习之 把一个文件中的字符串排序后再写入另一个文件案例

    1. 把一个文件中的字符串排序后再写入另一个文件 已知s.txt文件中有这样的一个字符串:"hcexfgijkamdnoqrzstuvwybpl" 请编写程序读取数据内容,把数据排 ...

  9. 【转载】SQL语句将一个表的数据写入到另一个表中

    在日常的数据库运维过程中,有时候需要将Select查询出来的数据集写入到另一个数据表中,其中一种方式是通过存储过程循环写入数据,另一种简便的方式是直接使用Insert Into语句后面跟上Select ...

随机推荐

  1. springboot controller传参,对象映射

    Post请求,对象映射时,在参数 加 @RequestBody: 传入对象内字段的json才能映射 {"legendData": [100,90,80,70,60,50,40,30 ...

  2. Windows下搭建Wampserver+Wordpress

    安装wordpress windows 下载安装包 百度云 提取码:qxzp 安装wamp WampServer就是Windows Apache Mysql PHP集成安装环境,即在window下的a ...

  3. libVEX学习

    VEX IR是一种更加接近于compiler使用的中间语言/中间表示,它是不依赖于特定体系架构的. 1. Code Blocks code blocks是VEX处理代码的一个单元,使用IRSB结构体表 ...

  4. shell 从函数文件中调用函数的方法

    你可以把所有的函数存储在一个函数文件中 你可以把所有的文件函数加载到当前脚本或命令行 加载函数文件中所有函数的方法: source xxx.sh

  5. centos 7 安装mysql5.7

    1.进入到要存放安装包的位置 cd /home/lnmp 2.查看系统中是否已安装 MySQL 服务,以下提供两种方式: rpm -qa | grep mysql yum list installed ...

  6. 热修复设计之CLASS_ISPREVERIFIED(二)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680本篇文章将继续从CLASS_ISPREVERIFIED实战来介绍热 ...

  7. 关于pandas

    axis轴,axis=0为逐行,axis=1为逐列

  8. 39-python基础-python3-字典常用方法-get()

    在访问一个键的值之前,检查该键是否存在于字典中,这很麻烦. 好在,字典有一个 get()方法,它有两个参数:要取得其值的键,以及如果该键不存在时,返回的备用值. dict.get(键,默认值) 实例- ...

  9. 8、服务发现&服务消费者Feign

    spring cloud的Netflix中提供了两个组件实现软负载均衡调用,分别是Ribbon和Feign.上一篇和大家一起学习了Ribbon. Ribbon :Spring Cloud Ribbon ...

  10. 分组取前N记录(转)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 经常看到问题,如何取出每组的前N条记录.方便大家参考于是便把常见的几种解法列出于下. 问题:有表 如下,要求取出各班前两名(允许并列第二)Tabl ...