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替换每行最后一个字符相关推荐

  1. 编写程序FooBizBaz.java,从1循环到150并且在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。

    (for语句练习)编写程序FooBizBaz.java,从1循环到150并且在每行打印一个值,另外在每个3的倍数行上打印出"foo",在每个5的倍数行上打印"biz&qu ...

  2. 12.15有一种数叫回文数,正读和反读都一样,如12321便是一个回文数。编写一个程序,从命令行得到一个整数,判断该数是不是回文数

    有一种数叫回文数,正读和反读都一样,如12321便是一个回文数.编写一个程序,从命令行得到一个整数,判断该数是不是回文数 package Text6;import java.util.Scanner; ...

  3. 有一种数叫回文数,正读和反读都一样,如12321便是一个回文数。编写一个程序,从命令行得到一个整数,判断该数是不是回文数。

    package task08;import java.util.Scanner;/** 8.有一种数叫回文数,正读和反读都一样,如12321便是一个回文数.* 编写一个程序,从命令行得到一个整数,判断 ...

  4. 2021-12-27 Java String contains() 方法用于判断字符串中是否包含指定的字符或字符串。用.toLowerCase().contains忽视大小写。

    一.public boolean contains(CharSequence chars) contains() 方法用于判断字符串中是否包含指定的字符或字符串. 二.返回值        如果包含指 ...

  5. 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 ...

  6. python如何从一个dataframe提取相应的行组成一个新的dataframe_从Excel到Python:最常用的36个Pandas函数!最完整的Pandas教程!...

    本文涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入.数据清洗.预处理,以及最常见的数据分类,数据筛选,分类汇总,透视等最常见的操作. 生成数据表 常见的生成数据表的方法有两 ...

  7. python如何从一个dataframe提取相应的行组成一个新的dataframe_Python|专题(1)——数据处理常规操作集(1)...

    大家好!好久不见!适逢国庆,先祝我亲爱的祖国七十周年生日快乐! 这一系列文章是针对最近在实习中做的一些数据预处理操作的整理.我们希望通过它们,带领大家了解和熟悉一些python做数据清洗,数据整合等的 ...

  8. Java黑皮书课后题第7章:*7.22(计算一个字符串中大写字母的数目)编写程序,从命令行输入一个字符串,然后显示字符串中大写字母的数目

    7.22(计算一个字符串中大写字母的数目)编写程序,从命令行输入一个字符串,然后显示字符串中大写字母的数目 题目 题目描述 破题 代码 运行实例 题目 题目描述 7.22(计算一个字符串中大写字母的数 ...

  9. sed在某一行行首添加字符_sed在行首或者行尾添加内容

    昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed命令上,今天不总结一下都对不起昨天流逝的时间啊~~~ 用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.f ...

  10. sed行首行尾添加字符

    用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.file 在每行的头添加字符,比如"HEAD",命令如下: sed 's/^/HEAD&/g' ...

最新文章

  1. 互联网轻量级框架SSM-查缺补漏第二天
  2. poj 3468 线段树
  3. SQL注入的原理解说,挺好!
  4. dns设置邮箱服务器,专业版DNS设置-更多-Coremail论客邮件系统-企业邮箱,8亿用户信赖的邮件服务器系统...
  5. Ansible(二)——基本环境的部署以及常用模块的使用
  6. Linux中的提权操作
  7. python方法_详细解读Python中的__init__()方法
  8. 主键与主键索引的关系
  9. 国际结算习题集及答案
  10. Vue配置TinyMCE富文本编辑器 + 图片(本地)上传到服务器
  11. 如何查找孔与轴配合的公差带表
  12. 从鸭子游戏设计看设计模式
  13. 【软件推荐】第6节:微力同步
  14. 零基础学习CSS(10)——属性选择器
  15. “子弹短信也压根撼动不了腾讯” | 畅言
  16. Vue02基础语法-插值+过滤器+计算属性+计算属性
  17. android 白板软件,Whiteboard
  18. java 构造方法和成员方法_java中构造方法和成员方法的区别
  19. 5G 模块信号质量判断
  20. 2022化工自动化控制仪表考试试题模拟考试平台操作

热门文章

  1. bootstrap搜索图标的使用
  2. 一、神经科学的过去,现在,未来
  3. ST语言入门(维修电工1)
  4. 中国准货币体系的概要简析
  5. nominal和ordinal 数据处理中四种基本数据类型
  6. 公云(3322)动态域名更新API
  7. 【MySQL】MySQL有几种锁
  8. css 背景图片虚化磨砂效果
  9. html5离散数学,离散数学怎样判断合取范式和析取范式
  10. 微信小程序之订阅消息