Shell之根据关键字符串替换文件中的行
KEY="所要搜索的关键字符串"
FullPath=所要搜索的文件的路径
str=“要替换行的字符串"
根据关键字符串定位行号:line=`sed -n '/'"$KEY"'/=' $FullPath`
打印匹配行的方法: sed -n -e '/关键词/p' 文件全路径
打印行号的方法: sed -n -e '/关键词/=' 文件全路径
打印匹配行与行号的方法: sed -n -e '/关键词/p' -e '/关键词/=' 文件全路径
判断line是否为空,为空时return,else则替换:if [ "$line" == "" ]; then return;
替换字符串:sed -i "" "${line}s#.*#"$str"#" $FullPath
example:
line=`sed -n '/'"$KEY"'/=' $FullPath`
if [ "$line" == "" ]; then
echo "is Null"
return;
else
echo $line
sed -i "" "${line}s#.*#"$str"#" $FullPath
sed -i "" "${line}s/.*/ &/" $FullPath
fi
cat -n 文件名|grep '关键字'|awk '{print $1}'
cat -n是获取行号,要是获取行内容,去掉-n就可以了。
#表示针对file文件中的第三行,将其中的aaa替换为fff
sed -i '3s/aaa/fff/' file
#表示针对文件,找出包含xxx的行,并将其中的aaa替换为fff
sed -i '/xxx/s/aaa/fff/g' file
#表示针对文件第1行,将其中的#号或是*号替换为fff
sed -i '1s/[#*]/fff/gp' file
sed '1s/.*/dog/' pet.txt
sed -e '/$KEY/{p;s/.*/cat temp/e;}'
spool命令参数注意点:
SET LINESIZE 2500; //每行允许的最大字符数,设置大些,免得数据被截断,但不宜过大,
太大会大大降低导出的速度(注意必须与trimspool结合使用防止导出的文本有太多的尾部空格)
set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为off
Shell之根据关键字符串替换文件中的行的更多相关文章
- 【Shell】使用sed命令替换文件中的某一行
原始文件内容 -bash-3.2# cat configTest.xml <?xml version="1.0" encoding="UTF-8"?> ...
- linux sed 批量替换文件中的字符串或符号
sed -i :直接修改读取的文件内容,而不是输出到终端. sed -i 就是直接对文本文件进行操作的 替换每行第一次出现的字符串 sed -i 's/查找的字符串/替换的字符串/' 文件 ...
- 使用 sed 命令查找和替换文件中的字符串的 16 个示例
当你在使用文本文件时,很可能需要查找和替换文件中的字符串.sed 命令主要用于替换一个文件中的文本.在 Linux 中这可以通过使用 sed 命令和 awk 命令来完成. 在本教程中,我们将告诉你使用 ...
- python逐行读取替换文件中的字符串
用列表中的值逐行替换文件中符合条件的字符串,并保存为新的文件, open("file").readlines 方案1: 逐行替换并保存为新的文件 import re def rep ...
- divmod(a,b)函数是实现a除以b,然后返回商与余数的元组、eval可以执行一个字符串形式的表达式、exec语句用来执行储存在字符串或文件中的Python语句
#!/usr/bin/env python a = 10/3 print(a) #divmod计算商与余数 r = divmod(10001,20) print(r) #eval可以执行一个字符串形式 ...
- linux 小技巧(查找替换文件中的ascii编码字符)
这里纪录一些linux下用到的小技巧,以免遗忘 在linux中经常碰见各种文件处理.最常用的就是替换文件中的某些字符.常见字符替换还是很容易完成.但是有些不可见字符以及ascii编码字符等等都无法直接 ...
- 用python 替换文件中的git地址
有个需求要替换文件中git地址,要替换成的git地址是一个变量 本来想用sed替换但是git地址中有斜杠符号 需要转义,提前知道还好弄,如果是变量就不好处理了 #!/usr/bin/python3 # ...
- Linux Shell 之 对文件中的行、单词、字符进行迭代
在进行文本文件进行处理时,对文件件中的行.单词.字符进行迭代和遍历是非常常用的操作.而将一个简单的循环用于迭代,再加上来自stdin或文件的重定向,这就是对文件中的行.单词.和字符进行迭代的基本方法. ...
- python将一个字符串写入文件中的编码问题
python2将一个字符串写入文件中: 1.如果字符串是str类型 # -*- coding:utf-8 -*- txtFile="今天天气不错" name = "1.t ...
- vs报错“以下文件中的行尾不一致,是否将行尾标准化”
vs报错"以下文件中的行尾不一致,是否将行尾标准化" 分析: 通过读取源文件,发现换行都使用的是"\n" Windows和Unix不同的标准引起的...即& ...
随机推荐
- Sentry 产品指南文档(附:详细脑图整理)
Sentry 基础知识 https://docs.sentry.io/product/ https://docs.sentry.io/product/sentry-basics/ 问题 https:/ ...
- 使用BizyAir,没有显卡,也能玩AI绘图
或许很多人跟我一样,没有显卡,但又很想玩AI绘图,但本地绘图怕是无缘了,只能借助云GPU的方式了. 今天跟大家分享一下一个简单目前可白嫖无门槛的方法实现无显卡也能玩AI绘图. 方案就是ComfyUI+ ...
- 05-canvas绘制简单图形之三角形
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- SMU Summer 2024 Contest Round 6
SMU Summer 2024 Contest Round 6 Many Formulas 题意 给你一个数,你可以在这个数的任意位之间插入零个或多个+号,形成一个算式,你需要计算所有可能形成的算式的 ...
- homeassistant自动化记录ping追踪在家联动设备
2022年8月29日修改代码块 进入hass的配置文件,docker版从portainer中查看配置情况 文件名configuration.yaml 下述添加到最后 # ping根据ip追踪手机 de ...
- SQL中解决i+1 & values中插入变量
基于JDBC环境下使用mysql插入数据的一些小问题 下方代码用于实现 批量向数据库中插入数据 一般为"垃圾"数据 代码例子实现i+1的效果 i=1 i+1=2 for (int ...
- Redmi AX6000 刷 OpenWrt
一直想尝试玩玩软路由,但是家里实在没有软路由的需求,外加不知道该入手什么机器来刷软路由,所以迟迟没有入手.最近研究生要开学了,但是学校的有线网要下载专用软件认证才能上网,终于找到合适的理由入手一款软路 ...
- Maven 设置 JDK 版本
Maven 设置 JDK 版本是通过 Apache Maven Compiler Plugin 插件实现的.它用于编译项目的源代码. 方法一 有时候你可能需要将某个项目编译到与当前使用的 JDK 版本 ...
- MRO, mixin的解读
本文试着将python中类继承中方法解析顺序MRO(method resolution order)和mixin梳理清楚 先MARK 类的继承中,super()的使用还是蛮多讲究的,因为看pytorc ...
- JS常见的API扩展形式(prototype、jquery、vue插件封装)以及怎样设计出易扩展的表单验证功能?
常见的API扩展形式 prototype 比如我现在有一个需求,给定一个字符串,给方法传递一个参数为数字类型来确定当前字符串重复次数,例如: 'abc'.repeatStringNumTimes(3) ...