LINUX替换字符串的几种方法 - 简简单单2018

zengpeng 2021-08-12 原文


LINUX替换字符串的几种方法

LINUX替换字符串的几种方法

1. 基本替换
:s/str1/str2/ 替换当前行第一个str1为str2
:s/str1/str2/g 替换当前行所有str1为str2
:n,$s/str1/str2/ 替换第 n 行开始到最后一行中每一行的第一个str1为str2
:n,$s/str1/str2/g 替换第 n 行开始到最后一行中每一行所有str1为str2
(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
:%s/str1/str2/(等同于 :g/str1/s//str2/) 替换每一行的第一个str1为str2
:%s/str1/str2/g(等同于 :g/str1/s//str2/g) 替换每一行中所有str1为str2
2. 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#str1/#str2/# 替换当前行第一个str1/ 为str2/
:%s+/str11/str12/+/str21/str22+ (使用+ 来 替换 / ): /str11/str12/替换成/str21/str22/
3. 文件中删除^M
问题描述:对于换行,Windows下用回车换行(0A0D)来表示,Linux下是回车(0A)来表示。这样,将window上的文件拷到Unix上用时,总会有个^M,请写个用在Unix下的过滤Windows文件的换行符(0D)的shell或c程序。有两种方法可以完成此目的:
(1)使用命令:cat oldfilename | tr -d “^V^M” > newfilename
(2)使用命令:sed -e “s/^V^M//” oldfilename > newfilename
需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。
在vim中处理:首先使用vim打开文件,然后按ESC键,接着输入命令:
:%s/^V^M//
:%s/^M$//g
如果上述方法无用,则正确的解决办法是:
(1) tr -d "\r" < old_file_name > new_file_name 或者 cat oldfilename | tr -d "\r" > new_file_name
(2) tr -d "\015" < old_file_name > new_file_name或者 cat oldfilename | tr -d "\015" > new_file_name
strings A>B
4. 其它技巧
利用 :s 命令可以实现字符串的替换。具体的用法包括:
:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
:g/str1/s//str2/g 功能同上
从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。
(2)sed命令替换字符串
sed替换的基本语法为:
代码如下:

sed
\'s/原字符串/替换字符串/\'
单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的,这时候只要把命令中的单引号改为双引号就行了,例如:

代码如下:

sed "s/原字符串包含\'/替换字符串包含\'/"
//要处理的字符包含单引号
命令中的三根斜线分隔符可以换成别的符号,这在要替换的内容有较多斜线是较为方便,只需要紧跟s定义即可,例如换成问号”?”:

代码如下:

sed \'s?原字符串?替换字符串?\'
//自定义分隔符为问号
可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个,例如:
代码如下:

sed \'s/原字符串/替换字符串/\'
//替换所有匹配关键字
上箭头”^”表示行首,美元”$”符号如果在引号中表示行尾,但是在引号外却表示末行(最后一行),这里犯二了,搜了半天哪个符号表示首行,半天才想起来,首行就是数字”1″啊.那么在行首和行尾添加字符串就是把行尾和行首替换,例如:

代码如下:

sed \'s/^/添加的头部&/g\' //在所有行首添加
sed
\'s/$/&添加的尾部/g\' //在所有行末添加
sed \'2s/原字符串/替换字符串/g\' //替换第2行
sed
\'$s/原字符串/替换字符串/g\' //替换最后一行
sed \'2,5s/原字符串/替换字符串/g\' //替换2到5行
sed
\'2,$s/原字符串/替换字符串/g\' //替换2到最后一行
替换样式可以多个在同一条命令中执行,用分号”;”分隔,例如:

代码如下:

sed \'s/^/添加的头部&/g;s/$/&添加的尾部/g\'
//同时执行两个替换规则
sed处理过的输出是直接输出到屏幕上的,要保存可以将输出重定向,或者使用参数”i”直接在文件中替换:

代码如下:

sed -i \'s/原字符串/替换字符串/g\' filename
//替换文件中的所有匹配项

版权声明:本文为zengpeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zengpeng/p/11165840.html

LINUX替换字符串的几种方法 - 简简单单2018的更多相关文章

  1. 终于完成RTP/RTSP代理服务器 – android开发实例

    终于完成RTP/RTSP代理服务器 经过一个月二十多天的不眠之日(我真的没睡过午觉哦),两易其稿,终于完成了R […]...

  2. 真正的Java学习从入门到精通 – Rollen Holt

    真正的Java学习从入门到精通 2011-04-27 17:43  Rollen Holt  阅读(706)  […]...

  3. 避免关闭窗口时,弹出\”关闭\”提示窗口- – star163

    一.关闭本窗口 1var hwnd = window.open(“about:blank̶ […]...

  4. CRM 2013 中业务流程的 – HelloHongfu

    CRM 2013 中业务流程的 在CRM 2013 中有一个新功能就业务流程,它可以引导用户在既定好的业务规则 […]...

  5. Windows netstat 查看端口、进程占用 – 兔大锤

    Windows netstat 查看端口、进程占用 目标:在Windows环境下,用netstat命令查看某个 […]...

  6. WePY – 小程序敏捷开发实践丨掘金开发者大会 – 子钦加油

    WePY – 小程序敏捷开发实践丨掘金开发者大会 声明:内容转载他处,如有侵权,可协商下架 本主题 […]...

  7. winspy++下载 – 芦荟~lh

    winspy++下载 链接: https://pan.baidu.com/s/1Brl7tpapXdunk74 […]...

  8. SSD固态硬盘使用注意事项 – 米粮二斗

    SSD固态硬盘使用注意事项   SSD固态硬盘的结构和运行方式不同于传统硬盘,在购买以后强烈建议进行一些设置以 […]...

随机推荐

  1. linux系统下文件误删除该如何恢复?

    一、linux误删除数据的场景在实际的工作中,朋友们可能会将linux服务器上的文件不小心误删除掉了。而且越是资历老的工程师越容易犯这样的错误,敲代码的速度也是够快,啪啪rm -rf一个回车,然后就是打脸时刻 。新人操作文件时往往战战兢兢...

  2. loadrunner笔记—一 – 萌萌~哒

    loadrunner笔记—一 1.Loadrunner主要由Vugen,Controller和An […]...

  3. 今天分享一简单的页面,实现的的过程及源码如下。

          html源码: <!DOCTYPE html> <html lang=̶ […]...

  4. VMware vCenter Server 6.5配置群集功能

        虚拟数据中心是一种容器,其中包含用于操作虚拟机的完整功能环境所需要的全部清单对象。可以创建多个数据中心 […]...

  5. Java练习(模拟扫雷游戏)

            要为扫雷游戏布置地雷,扫雷游戏的扫雷面板可以用二维int数组表示。如某位置为地雷,则该位置用数 […]...

  6. 地址级联选择器(element-china-area-data插件)

    1.安装 npm install element-china-area-data -S 2.引入 import […]...

  7. Aspnet前后端分离项目手记(一) 关于跨域问题(还有前言)

         前言,最近的项目使用前后端分离的模式,记录其中一些知识点。经过这个项目,也对前后端分离有了更多理解, […]...

  8. radius服务器的配置

        Radius角色的安装 1. 打开角色选择网络策略和服务 2. 下一步后选择网络策略服务器 3. 安装 […]...

展开目录

目录导航