linux替换倒数第二个字符,sed – 替换文件倒数第二行的“模式”
我必须在文件的倒数第二行 – file.txt中用“string”替换“pattern”.
以下三个sed命令能够打印倒数第二行.但我需要用“字符串”替换“模式”.任何帮助?
sed -e '$!{h;d;}' -e x file.txt
sed -n 'x;$p' file.txt
sed 'x;$!d' file.txt
$cat file.txt
cabbage
spinach
collard greens
corn salad
Sweet pepper
kale
如何替换文件的倒数第二行(甜椒):
一个.如果倒数第二行包含“甜椒”,则将“Sweet”替换为“green”
湾用“胡萝卜”代替整条生产线,无论它含有什么
要在第二行到最后一行将Sweet更改为Green,但仅当该行包含Sweet pepper时:
$sed 'x; ${/Sweet pepper/s/Sweet/Green/;p;x}; 1d' file.txt
cabbage
spinach
collard greens
corn salad
Green pepper
kale
要将整个倒数第二行替换为胡萝卜,无论它包含什么,
$sed 'x; ${s/.*/carrots/;p;x}; 1d' file.txt
cabbage
spinach
collard greens
corn salad
carrots
kale
这个怎么运作
让我们使用此命令并一次检查一步:
sed 'x; ${s/.*/carrots/;p;x}; 1d'
> x
这将交换模式空间(保存最近读取的行)和保持空间.
完成此操作后,保留空间将包含最近读取的行,并且模式空间将包含上一行.
(例外情况是我们刚读完第一行.在这种情况下,保留空间将有第一行,模式空间将为空.)
> ${s /.*/ carrots /; p; x}
当我们在最后一行(由$表示)时,模式空间保持倒数第二行,我们可以执行我们喜欢的任何替换或其他命令.当我们完成后,我们用p打印倒数第二行.最后,我们用x交换模式并再次保持空间,以便模式空间将再次包含最后一行. sed将打印这个,因为默认情况下,在命令的末尾,sed打印模式空间中的任何内容.
> 1d
当我们在第一行(由1表示)时,模式空间为空(因为没有前一行)并且我们将其删除(d).
一种更简单的方法
这种方法易于理解,代价是执行速度较慢:
$tac file.txt | sed '2 {/Sweet pepper/s/Sweet/Green/}' | tac
cabbage
spinach
collard greens
corn salad
Green pepper
kale
并且,对于胡萝卜:
$tac file.txt | sed '2 s/.*/carrots/' | tac
cabbage
spinach
collard greens
corn salad
carrots
kale
它是如何工作的:在这里,我们使用tac来反转线的顺序.注意:
$tac file.txt
kale
Sweet pepper
corn salad
collard greens
spinach
cabbage
通过这种方式,倒数第二行成为第2行.因此,我们只是简单地告诉sed在第2行操作.之后,我们再次使用tac来放置行,但顺序正确.
linux替换倒数第二个字符,sed – 替换文件倒数第二行的“模式”相关推荐
- oracle替换子字符串,oracle字符/字符串替换
在ORACLE中的字符串替换 replce.regexp_replace 和 translate函数,下面我来给大家介绍一下. 在ORACLE中的字符串替换 replce.regexp_replace ...
- linux 上使用wc -l命令快速查看文件内容有多少行,以及如何匹配指定字符查看多少行
1 linux的cat -n命令查看文件内容一共有多少行 1.cat -n命令查看文件多少行 cat -n filename 如:cat -n gallery_color_depth.txt - 2. ...
- linux shell sed 删除文件 前几行
sed命令 不加参数i 就只看到结果,没写入a.txt文件,加 参数i 就写入了 如果有不大确定删除效果的,就先不加 参数i 1,删除首行 $ sed -i '1d' a.txt 2,删除前100行 ...
- 如何使用sed在文件中确定行插入带有变量的字符串
背景 最近在研究一键部署,其中有一个环节,是要使用shell脚本放开防火墙的某个端口号 方法 使用shell中常见的插入文本命令:sed 问题 如果已经预知要打开的端口号如6379,可以使用:sed ...
- 用sed删除文件中指定行
删除第N行: sed -i 'Nd' filename 删除第M到N行: sed -i 'M,Nd' filename sed -e '/abc/d' a.txt // 删除a.txt中含&qu ...
- linux 日志行数,如何实时查看日志文件新增的行数
用python观察文件: #-------- track_file.py --------# import os def track_file(path, callback): "" ...
- Linux之awk:按照字符或列进行筛选与计算列值 条件动作
1 语法 awk '条件1{动作1} 条件2{动作2}...'文件名条件(Pattern):一般使用关系表达式作为条件--x > 10判断变量x是否大于10 动作(Action):格式化输出流程 ...
- js将数组中的字符串按照第二个字符的大小排序(sort排序)
输入为:["abc","bac","acb","acg","acz"] 输出为:["bac ...
- 将您重定向的次数过多什么意思_【linux二三轶事】重定向是啥?文件描述符是啥?...
[前言] 写这篇文章的原因,是因为我在工作中遇到重定向和fd的时候,被这厮折磨的够呛.现在终于战胜了他们,当然要奏一首凯歌,率土同庆啦! 在开启正文之前,我们必须要先明白几个关键点,这对于理解后面的文 ...
最新文章
- 3400g主机用linux系统,最强整合平台!锐龙5 3400G小钢炮主机配置推荐
- react 子传参父_React 子组件给父组件传值、整个组件、方法
- java引用传递_理解Java中的引用传递和值传递
- 大型程序是如何开发的_小程序开发好之后如何引流
- python人脸检测与微信小程序_python+requests对app和微信小程序进行接口测试
- 2003退休去世领了2年退休金没回本就死了能退吗?
- C/C++函数的本质以及多线程函数的调用过程
- 编译安装LAMP对其性能压力测试
- adalm pluto_Apache Pluto Portlet&Struts 2集成示例教程
- Ajax 1.0 中使用web控件调用后台方法的用法.
- Spring 和SpringMVC 的父子容器关系
- 计算机网络局域网的组建实验报告,小型局域网组建实验报告
- 2022年北京航空航天大学计算机考研复试时间与复试内容
- WSJ Merkel Top On Forbes' Most Powerful Women List For 4th Year
- 使用Overleaf写作是参考文献引用没按顺序
- JavaScript中ubound函数
- Fiddler数据抓包试玩改包工具使用畅享
- Docker真正的入门
- python 列表迭代_Python | 以相反的顺序迭代列表
- HTML+JavaScript实现网页秒杀倒计时效果
热门文章
- 2022年第十三届蓝桥杯 python B组 第B题 寻找整数
- 智慧商业零售商业模式是什么,智慧商业零售商业模式有那些,智慧零售数据采集维度
- [转帖]μTorrent官方FAQ翻译+如何使用RSS在Mininova下载torrent
- html 阅读排版模板,HTML5简洁的黑白色调时间轴事件排版模板
- Mac OS 系统监控工具 iStat Menus 6.11 安装
- css宋体代码_css字体样式
- java word文档生成_java生成word文档
- linux中.bashrc 等文件中的rc是什么意思
- 神医“大数据” 甘做幕后英雄
- 浅谈android中加载高清大图及图片压缩方式(二)