sed命令在Mac和Linux下的不同

2023-09-15 19:25:38

问题

(1)Windows系统里,文件每行结尾是'<回车><换行>', '\r\n'

(2)Mac系统里,       文件每行结尾是'<回车>',即'\r'

(3)Unix系统里,      文件每行结尾是'<换行>',即'\n'

所以,用'\n'作为作为换行符的文件,用Windows的记事本打开时 会没有换行;

而用'\r\n'作为换行符的文件(windows文件),用Linux或mac的vim打开时 会将\r显示成^M。


echo "a,b,c,d"

在Mac或Linux系统下,以上结果皆为
a,b,c,d

现用sed,将","替换为换行,  Linux系统下执行

echo "a,b,c,d" |sed 's/,/\n/g',

结果为:


alt

相同命令,在Mac下执行结果则为:

alt

解决


通过安装gsed来解决,

brew install gnu-sed

然后使用gsed,

alt

在bash_profile中加一条alias,用gsed替换掉sed




更多相关问题,可参考[1]


实战一下


sed -i 's#老的路径#新的路径#g' 目标文件地址


在某大厂服务器,从虚拟机向容器迁移过程中,需要改写配置文件中日志和ip库文件的位置。

例如,需将原文件中log_path由 /home/google/log/service/qa/改为/home/appops/logs/service/qa/

执行 sed -i 's#/home/google/log#/home/microsoft/logs#g' config.yml

(一般在Makefile里添加)

alt

又例如,需要将

    city1: /中国/浙江/杭州/余杭/仓前.db
    city2: /中国/浙江/杭州/余杭/闲林.txt
    city3: /中国/浙江/杭州/余杭/中泰.md

改为

    city1: /中国/余杭/仓前.db
    city2: /中国/余杭/闲林.txt
    city3: /中国/余杭/中泰.md

可以执行 sed -i 's#/中国/浙江/杭州#/中国#g' config.yml

alt

再例如,需要将

    city1: /中国/浙江/杭州/余杭/街道/仓前.db
    city2: /中国/江苏/苏州/虎丘/街道/横塘.txt
    city3: /中国/山东/滨州/邹平/街道/黛溪.md

改为

    city1: /中国/华东/街道/仓前.db
    city2: /中国/华东/街道/横塘.txt
    city3: /中国/华东/街道/黛溪.md

当然可以

sed -i 's#/中国/浙江/杭州/余杭/仓前.db#/中国/华东/余杭/仓前.db#g' config.yml
sed -i 's#/中国/江苏/苏州/虎丘/横塘.txt#/中国/华东/虎丘/横塘.txt#g' config.yml
sed -i 's#/中国/山东/滨州/邹平/黛溪.md#/中国/华东/邹平/黛溪.md#g' config.yml

但更好的办法,是使用通配符

sed -i 's#/中国/.*街道#/中国/华东/街道#g' config.yml

alt

其中

  • . 表示任何单个字符
  • * 表示某个字符出现了0次或多次

's#/中国/.*街道#/中国/华东/街道#g' 也就是 把'中国/xxxxxx任意多个字符xxxxx街道',替换为'中国/华东/街道'


更多可参考 coolshell-SED 简明教程[2]

参考资料

[1]

更多相关问题,可参考: https://www.google.com/search?newwindow=1&rlz=1C5CHFA_enCN758CN758&sxsrf=ACYBGNRgj_G2k3S1PNhmPd8Zzs-Jfyor2g%3A1574328575244&ei=_1jWXeHFDvTXz7sPn_KXWA&q=sed%E5%91%BD%E4%BB%A4+mac+%E5%8C%BA%E5%88%AB&oq=sed%E5%91%BD%E4%BB%A4+mac+%E5%8C%BA%E5%88%AB&gs_l=psy-ab.3...295935.300081..300238...4.2..0.311.2569.0j2j7j1......0....1..gws-wiz.......0i71j0i12j0i8i30j33i160.jDax8rOLIAk&ved=0ahUKEwihwfL7_vrlAhX063MBHR_5BQsQ4dUDCAs&uact=5

[2]

coolshell-SED 简明教程: https://coolshell.cn/articles/9104.html

本文由 mdnice 多平台发布

更多推荐

提升前端开发效率:基于vue的van-radio-group组件封装指南

前言vant作为一款流行的ui框架,其中,van-radio-group组件是一个常用的单选框组件,但有时我们需要根据项目需求进行定制化封装。本文将介绍如何基于vue框架封装van-radio-group组件,让我们一起来探索吧!封装文件在这个组件中,使用了vant框架提供的van-radio-group和van-ra

Linux-网卡和网络配置

链接一篇大佬的博客:Linux之手把手教会修改网卡名称文章目录修改网卡名称步骤1:修改“/etc/default/grub”步骤2:修改“/etc/sysconfig/network-scripts”下的文件步骤3:修改“ifcfg-eth0”配置步骤4:判断操作系统的引导模式步骤5:根据不同的引导模式重新读取配置文件

el-table 列背景色渐变

最初的想法是,给每一行添加背景色,逐行递减透明度,发现结果比较突兀,效果如下:如果有需要这种样式的,代码如下:<template><div><el-table:data="tableData":header-cell-style="headerCellStyle":cell-style="cellStyle"style

Redis Part1

单体架构:一台Web服务器、一台数据库服务器。回顾,关系型数据库:基于二维表来存储数据的数据库就是关系型数据库。MySQL跟Redis的区别:MySQL是关系型数据库,它是基于表来存储数据的,MySQL数据是写在磁盘的,它是跟磁盘进行交互的;Redis是非关系型数据库,它是把数据存储在内存当中的,是跟内存进行交互的。M

Go基础语法:数组

6数组6.1数组的定义数组在定义时就需要声明其元素数量和类型://T即元素类型var数组变量名[元素数量]T如:vara[5]int.数组的长度必须是常量,并且长度是数组类型的一部分,一旦定义,长度不能变。所以,[5]int和[10]int是不同的类型。packagemainimport"fmt"funcmain(){

功能基础篇3——Python中的输入输出、文件读写、序列化

IO文件读写openopen()为内置函数,用于读写文件mode读写x,create,创建,文件存在报错,可写不可读r,read,读入,默认读写方式,文件不存在报错,可读不可写w,write,写入,文件不存在会创建文件,存在清空文件内容,可写不可读a,append,追加,文件不存在会创建文件,光标移至文件末尾,可写不可

CentOS常用命令

一、yum命令1.1列表源服务器软件包yumlist//列出yum源服务器上所有的软件包,太多了,一般不单独使用,大多数要配合管道grep使用yumlistopenssl*//列出yum源服务器上所有以openssl开头的软件包yumlist|grepopenssl//列出yum源服务器上所有包含openssl的软件包

实时可追溯性和事后可追溯性

在当今的世界里,成功的组织都将其创新和复杂产品开发流程建立在跨多个工作流的互联数据上。为此,他们需要收集利益相关者的想法以构建系统架构,管理高级需求以创建详细的用户故事,并实施验证程序以检查问题。同时,在满足标准规定并在当前的市场环境中保持竞争力的过程中,与各利益相关者的协作需要深度的追踪。许多行业标准都要求有需求追踪

记一次 .NET 某仪器测量系统 CPU爆高分析

一:背景1.讲故事最近也挺奇怪,看到了两起CPU爆高的案例,且诱因也是一致的,觉得有一些代表性,合并分享出来帮助大家来避坑吧,闲话不多说,直接上windbg分析。二:WinDbg分析1.CPU真的爆高吗这里要提醒一下,别人说爆高不一定真的就是爆高,我们一定要拿数据说话,可以用!tp观察下。0:000>!tplogSta

关于ITSS认证资质整改和降级

最近来我公司咨询ITSS年审换证的企业比较多,很多企业伙伴的ITSS信息技术服务运维符合性证书2023年到期将面临换证,很多企业觉得拿证三年了都没有问题,换证随便糊弄一下就行了。但是在年审换证再评估中会遇到很多问题,就一些问题我们武汉好地科技小编整理出了一套年审换证再评估相关注意事项。ITSS认证再评估相关事项:1.持

ELK日志分析系统

日志服务器提高安全性集中存放日志缺陷:对日志的分析困难ELK日志分析系统ElasticsearchLogstashKibana介绍ELK日志分析系统是一套完整的日志集中处理解决方案,基于Elasticsearch、Logstash、Kibana三种开源工具进行日志收集、存储和可视化elk可以帮助用户快速定位和分析应用程

热文推荐