java string替换最后一个字符_sed替换每行最后一个字符
echo 123456789 | sed -n 's/\(.*\)\(.\)/\1/g'
这种方法意思是sed分组匹配。怎么分组呢?先看单引号里的内容。
-n意思是只显示sed处理的行。如果后面跟的是文件,则不会直接修改源文件。会单独加一行匹配到的行。然后单独输出加出来的这一行。
s///g 这是固定语法。匹配替换字符串用的。s/后面这堆乱七八糟的是什么意思呢?慢慢看
先看这个:\(.*\)\(.\)/
刚才说用法是分组匹配,分组关键字是用括号分组。
先看第一个分组(.*)。但是括号需要转义,所以就变成了\(.*\) 这是第一个分组。里面的内容是.*,即正则表达式中的点和星号,意为任意长度任意字符串。也就是说如果我有1个字符串用这个正则能匹配到,有100万1000万个字符也能匹配到。没有也能匹配到哦。因为是任意长度。
第二个分组(.),同样的,先把括号转义。变成了\(.\)。里面的内容同样是正则表达式中的点。意思是任意一个字符串,注意第二个分组和第一个分组所用的正则的区别。
这样,我们就把123456789这个字符串分割成了两组。
第一组是:12345678
第二组是:9
接下来再看这个:/\1/g
第一个斜线是s///g里面中间的斜线,属于固定语法。\1的意思是第一个分组。也就是说这里的\1就等于12345678,为什么1前面要加上反斜线呢。如果不加这个反斜线,就会把匹配到的内容替换成了数字1,所以要加上反斜线转义,告诉sed,我要输出第一个分组。
g是全局匹配。
组合起来看就简单了,我先出输出了123456789,然后用sed分组匹配。分两组,第一组是12345678,第二组是9,然后输出第一个分组。就能实现你说的如何去掉每行最后一个字符。
由于sed处理文件的机制属于从第一行开始读,然后读第二行,第三行...以此类推。
所以这样就能把每行的最后一个字符去掉。
java string替换最后一个字符_sed替换每行最后一个字符相关推荐
- 编写程序FooBizBaz.java,从1循环到150并且在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。
(for语句练习)编写程序FooBizBaz.java,从1循环到150并且在每行打印一个值,另外在每个3的倍数行上打印出"foo",在每个5的倍数行上打印"biz&qu ...
- 12.15有一种数叫回文数,正读和反读都一样,如12321便是一个回文数。编写一个程序,从命令行得到一个整数,判断该数是不是回文数
有一种数叫回文数,正读和反读都一样,如12321便是一个回文数.编写一个程序,从命令行得到一个整数,判断该数是不是回文数 package Text6;import java.util.Scanner; ...
- 有一种数叫回文数,正读和反读都一样,如12321便是一个回文数。编写一个程序,从命令行得到一个整数,判断该数是不是回文数。
package task08;import java.util.Scanner;/** 8.有一种数叫回文数,正读和反读都一样,如12321便是一个回文数.* 编写一个程序,从命令行得到一个整数,判断 ...
- 2021-12-27 Java String contains() 方法用于判断字符串中是否包含指定的字符或字符串。用.toLowerCase().contains忽视大小写。
一.public boolean contains(CharSequence chars) contains() 方法用于判断字符串中是否包含指定的字符或字符串. 二.返回值 如果包含指 ...
- Java:从1循环到150,在每行打印一个值,另外在每个3的倍数行上打印出foo“,在每个5的倍数行上打印“biz“,在每个7的倍数行上打印“baz“
public class ForText{public static void main(String[] args){for(int i=1;i<=150;i++){System.out.pr ...
- python如何从一个dataframe提取相应的行组成一个新的dataframe_从Excel到Python:最常用的36个Pandas函数!最完整的Pandas教程!...
本文涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入.数据清洗.预处理,以及最常见的数据分类,数据筛选,分类汇总,透视等最常见的操作. 生成数据表 常见的生成数据表的方法有两 ...
- python如何从一个dataframe提取相应的行组成一个新的dataframe_Python|专题(1)——数据处理常规操作集(1)...
大家好!好久不见!适逢国庆,先祝我亲爱的祖国七十周年生日快乐! 这一系列文章是针对最近在实习中做的一些数据预处理操作的整理.我们希望通过它们,带领大家了解和熟悉一些python做数据清洗,数据整合等的 ...
- Java黑皮书课后题第7章:*7.22(计算一个字符串中大写字母的数目)编写程序,从命令行输入一个字符串,然后显示字符串中大写字母的数目
7.22(计算一个字符串中大写字母的数目)编写程序,从命令行输入一个字符串,然后显示字符串中大写字母的数目 题目 题目描述 破题 代码 运行实例 题目 题目描述 7.22(计算一个字符串中大写字母的数 ...
- sed在某一行行首添加字符_sed在行首或者行尾添加内容
昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed命令上,今天不总结一下都对不起昨天流逝的时间啊~~~ 用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.f ...
- sed行首行尾添加字符
用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.file 在每行的头添加字符,比如"HEAD",命令如下: sed 's/^/HEAD&/g' ...
最新文章
- 互联网轻量级框架SSM-查缺补漏第二天
- poj 3468 线段树
- SQL注入的原理解说,挺好!
- dns设置邮箱服务器,专业版DNS设置-更多-Coremail论客邮件系统-企业邮箱,8亿用户信赖的邮件服务器系统...
- Ansible(二)——基本环境的部署以及常用模块的使用
- Linux中的提权操作
- python方法_详细解读Python中的__init__()方法
- 主键与主键索引的关系
- 国际结算习题集及答案
- Vue配置TinyMCE富文本编辑器 + 图片(本地)上传到服务器
- 如何查找孔与轴配合的公差带表
- 从鸭子游戏设计看设计模式
- 【软件推荐】第6节:微力同步
- 零基础学习CSS(10)——属性选择器
- “子弹短信也压根撼动不了腾讯” | 畅言
- Vue02基础语法-插值+过滤器+计算属性+计算属性
- android 白板软件,Whiteboard
- java 构造方法和成员方法_java中构造方法和成员方法的区别
- 5G 模块信号质量判断
- 2022化工自动化控制仪表考试试题模拟考试平台操作