[Shell]sed命令在MAC和Linux下的不同使用方式
----------------------------------------------------------------------------------------------------------------------------
**********************
2017-1-13:初版
**********************
小记:用MAC工作已经三周,本以为已经完全了解MAC与Windows的各种不同,没想到这两天被Shell给摆了一道,mac下的shell和linux下竟然有些许的不同,由此耽误了我3个小时的宝贵时间,特此吐槽,做个整理。
------------------------------------------------------------------------------------------------------------------------------
对于shell小白的我,先看这里比较详细的sed简明教程,针对linux的用法。
MAC和Linux的区别,参考网址:
http://blog.csdn.net/cbbbc/article/details/50474947
错误解决
sed command hits “undefined label” error on Mac OS X
http://www.mkyong.com/mac/sed-command-hits-undefined-label-error-on-mac-os-x/
接下来言归正传,步入正题:
原数据
可以用vi或者vim创建一个test.txt的文本,
dongzhengdeMacBook-Pro:temp dongzheng$ vim test.txt
文本内容如下:
dongzhengdeMacBook-Pro:temp dongzheng$ cat test.txt
aaaa
bbbb
cccc
dddd
占位符
在匹配行的前一行或者后一行添加内容
写法:
#匹配行前加
sed -i '/dzblog/inickname' file
#匹配行前后
sed -i '/dzblog/athis is my blog address' file
书写时为了方便区分,往往会在i或者a的后面加一个反斜杠。代码就变成:
#匹配行前加
sed -i '/dzblog/i\nickname' file
#匹配行前后
sed -i '/dzblog/a\this is my blog address' file
想记住也很简单,a就记忆成after就可以了。
例子:
在第二行即"bbbb"行的下面添加一行,内容为"delon"
Linux命令:
sed '/bbbb/a\delon' test.txt
如果此命令在MAC下输入,会报错:
sed: 1: "/bbbb/a\delon": extra characters after \ at the end of a command
占位符
MAC命令:
➜ Home sed '/aaaa/a\
delon
' test.txt
结果:
aaaa
bbbb
delon
cccc
dddd
在某行的前面添加,只需要把'a'换成'i'即可。
此命令不会在原文件上进行更改,只是会把结果输出到termimal里,如果需要直接更改文件,需要参数 -i
直接替换文件里的指定文本
主要介绍-i和替换文本的方式
Linux命令
#直接将file文件里的printa替换为printb
sed -i 's/printa/printb/' test.txt
MAC上的命令当然略有不同,报错为:
sed: 1: "test.txt": undefined label 'est.txt'
MAC命令:
#mac的使用方式sed -ixxx 's/被替换文本/替换文本/' test.txt
sed -i.bak 's/printa/printb/' test.txt
-i后面跟字母数字均可,比如说我写的-i.bak,这样的话,会在file的同级目录下,出现一个test.txt.bak的文件,这个文件备份的是文件修改前的内容。
我想mac的设计初衷或许是为了防止sed改错的悲剧,所以必须强制备份。
复制过来,未验证
Linux shell脚本 删除文件中的一行内容
比如:在1.txt里有以下内容:
HELLO=1
NI=2
WORLD=3
I Love China.
Love all....
如果是要删除第三行:
sed -i '3d' 1.txt
如果删除以Love开头的行
sed -i '/^Love/d' 1.txt
删除包含Love的行
sed -i '/Love/d' 1.txt
参考
http://www.360doc.com/content/14/1125/19/7044580_428024359.shtml
有空就学习如下几个命令:
https://zhidao.baidu.com/question/508817260.html?qbl=relate_question_0&word=shell%20%C8%A1%CE%C4%BC%FE%CC%D8%B6%A8%D0%D0%20%CC%ED%BC%D3
[Shell]sed命令在MAC和Linux下的不同使用方式的更多相关文章
- 几款抓包工具在windows,mac,linux下的支持分析
		
抓包工具的使用 几款抓包工具在windows,mac,linux下的支持分析 抓包工具简介 Chrome/Firefox 开发者工具: 浏览器内置,方便易用 Fiddler/Charles: 基于代理 ...
 - Mac、Linux下两个Emacs共享一个配置文件
		
Mac.Linux下两个Emacs共享一个配置文件 有些嵌入式的实验需要在Linux进行,就安装了RHEL6.4的虚拟机,下载并编译了Emacs. 在Linux的.emacs文件中加入以下语句,即可引 ...
 - Linux shell sed命令使用
		
Linux处理文本文件的工具: grep 过滤文件内容 sed 编辑文件内容 awk 正则表达式Regex ...
 - Linux shell sed命令在文件行首行尾添加字符
		
昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed命令上,今天不总结一下都对不起昨天流逝的时间啊~~~ 用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.f ...
 - Linux shell sed 命令详解
		
详细的sed命令详解,请参考https://my.oschina.net/u/3908182/blog/1921761 sed命令常见用途 查找关键词做全局替换 查找某行的关键词做替换 查找关键字所在 ...
 - mac和linux下使用Docker,部署SpringBoot项目到docker
		
主要是看一下如何在linux及mac上安装docker,创建docker镜像,部署SpringBoot项目到docker,并借助于DaoCloud进行docker镜像下载加速等. 我用的电脑是mac, ...
 - linux命令(47):Linux下对文件进行按行排序,去除重复行
		
Linux下对文件进行按行排序:sort 与 uniq 命令简介 Linux | May 24, 2015 | linux sort 命令可针对文本文件的内容,以行为单位进行排序.其基本语法格式为: ...
 - linux下文件夹归置方式
		
/bin:二进制可执行命令./dev:设备特殊文件./etc:系统管理和配置文件./etc/rc.d:启动的配 置文件和脚本./home:用户主目录的基点,比如用户user的主目录就是/home/us ...
 - Linux下软件常见安装方式
		
pasting 分类: Linux2007-12-08 16:31 1909人阅读 评论(0) 收藏 举报 linuxredhat脚本文档managerfile Linux下软件安装主 ...
 
随机推荐
- Open quote is expected for attribute "{1}" associated with an  element type  "column".
			
这个的错误的意思很简单:就是自己的配置文件是否缺少""号
 - spring boot 注解
			
一级注解:(写在类名前面的)@RestController: 等价于在函数前面写@ResponseBody ,会直接返回要显示的内容 @ControllerString返回的是模板文件的名称. 二级注 ...
 - python第三天基础之字符编码
			
一 了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的, ...
 - javabean转换为map对象
			
在调用第三方接口发现对方使用map进行接收(不包括秘钥等),将bean类属性转换为map,直接贴代码: /** * JavaBean对象转化成Map对象 * * @param javaBean */p ...
 - 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB
			
走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...
 - Linux下安装numpy
			
转自:https://blog.csdn.net/abc_321a/article/details/82056019 1.下载源码包 ,命令如下 wget http://jaist.dl.source ...
 - Maven学习笔记1(clean compile package install)
			
Maven是一个项目构建管理工具,使用相应的命令 就可以快速完成项目的编译 打包. 1.下载maven,直接解压目录就可以了,配置maven的环境变量就可以在window下的任何文件夹下以命令的方式执 ...
 - HTML之二 -特殊标签 与数据交互标签
			
1.<img> 标签 © <h1> <img src="1.jpg" width="200" height="200& ...
 - HTML5开发和布局(待补充)
			
移动开发准则 1.尽量使用单页面开发(SPA) 2.慎选UI框架 3.动画.特效使用(60fps) **浏览器消耗最小的CSS属性** 位置:transform:translate(x,y,z) 大小 ...
 - Java基础之Java常用类--Object类,字符串相关类,包装类,日期相关类,数字相关类
			
Java是一种面向对象的语言,也就是将万事万物可以描述为对象,特点如下: 1.面向对象是常见的一种思考习惯,符合人们的思考习惯.2.面向对象的出现,将复杂的事情简单化.3.面向对象的出现,将之前过程中 ...