# 先找到指定字符串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. 网页打开qq

    网页打开qq 打开qq方法tencent://message/?uin=”+“541239271”+“&Menu=yes http://wpa.qq.com/msgrd?V=1&uin ...

  2. C#变量1

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 1.变量:代表这内存(RAM,保存正在运行程序的数据,断电RAM中的数据将会丢失)中的一块空间,我们可以通过变量的名称存/取数据, 因此我 ...

  3. 20140902 字符串拷贝函数 右旋转字符串 string类的编写

    1.strncpy字符串拷贝函数 //strncpy的程序 #include<stdio.h> #include<assert.h> char *strncpy1(char * ...

  4. Ubuntu apt-get 更新/查看软件

    ubuntu 升级软件: sudo apt-get update 更新源 sudo apt-get upgrade 更新已安装的包 sudo apt-get dist-upgrade 升级系统 ubu ...

  5. 线程分离pthread_detach()中的return()和pthread_exit()

    #include <stdio.h> #include <pthread.h> pthread_t tid[]; void *func_2(void *arg); void * ...

  6. Joda-Time 入门

    Joda-Time 令时间和日期值变得易于管理.操作和理解.事实上,易于使用是 Joda 的主要设计目标.其他目标包括可扩展性.完整的特性集以及对多种日历系统的支持.并且 Joda 与 JDK 是百分 ...

  7. nexus私服仓库搭建以及项目引用

    第一步:使用ubunto下载安装nexus  并打开登录进入到nexus管理页面,默认账号为 admin  密码在 admin.password 中,首次登录会让你重新修改密码 第二步  配置自己本地 ...

  8. Codeforces 251C Number Transformation DP, 记忆化搜索,LCM,广搜

    题意及思路:https://blog.csdn.net/bossup/article/details/37076965 代码: #include <bits/stdc++.h> #defi ...

  9. 一些笔记jexcel

    根据坐标或者指定列标题 jexcel.getColumnNameFromId([ x, y ]);

  10. 视频专家之路【四】:ffmpeg简单实战之获取属性

    本文是听了雷宵骅大神的课之后的总结,部分内容借用了其PPT的内容,如有侵权请告知删除. 雷宵骅大神的博客为:https://blog.csdn.net/leixiaohua1020 本节的目的正式开始 ...