(转)在 Mac 上使用 `sed` 命令的几个坑

原文连接: http://zhouxiaohong.com/2016/08/02/sed-in-mac/

作者: ZhouXiaoHong

在 Mac 上使用 sed 命令和 linux 上会有一定区别,在此作为记录。

不可忽略的备份格式

sed -i  ‘s/hello/world/g‘ hello.text

上面这行代码,可以在 linux 上运行,作用是将找到的 hello 替换为 world,并且直接保存修改到文件。但是如果在 Mac 上,你会发现这行代码会报错。原因是在 Mac 上,sed 命令直接操作文件的时候,必须指定备份的格式,而在 linux 上,却并没有这个要求。

sed -i ‘‘ ‘s/hello/world/g‘ hello.php

如上面的代码所示,在 -i 之后加上一对引号,来指定备份格式,如果不需要备份,引号里的内容可以为空。

插入文本需要换行

sed -i ‘‘ ‘1i\ hello ‘ hello.php

上面这行代码,作用是往文件中插入 hello ,在 linux 下可以正常运行,但是在 Mac 上,啊哦,报错。原因是使用 sed 命令往文件中插入文本时,必须在 1i 后面插入一个换行符正确代码如下。例如你要在终端使用此命令,正确代码如下,在 1i 后,敲个回车,然后继续输入后面的命令。

sed -i ‘‘ ‘1i\
hello‘ hello.php

因为我是使用 ruby 来调用 shell 脚本,因此会将命令写在字符串中,在 ruby 中使用 sed 插入文本的代码如下。

system "sed -i ‘‘ ‘1i\\‘$‘\n‘‘hello‘ hello.php"

这些都是血的教训啊。。。。。。。

原文地址:https://www.cnblogs.com/xuange306/p/12090215.html

时间: 2024-11-06 07:34:05

(转)在 Mac 上使用 `sed` 命令的几个坑的相关文章

mac上执行sed的编辑 -i命令报错sed: 1: "test.txt": undefined label ‘est.txt’或sed: 1: "2a\test\": extra characters after \ at the end of a command

问题一 sed编辑命令:[sed -i 's/a/b/g' test.txt] 报错:sed: 1: "test.txt": undefined label 'est.txt' 解决方案:增加一个备份的追加名[sed -i '.bak' 's/a/b/g' test.txt] 原因:mac强制要求备份,否则报错 当然可以不使用其他备份名字,只是用’',就可以只保留一份 sed -i ‘’ ’s/a/b/g’ test.txt 问题二 sed追加命令:[sed -i '' "/

Mac上通过Linux命令行批量查找和替换文本

一般在本地电脑上批量替换文本有许多工具可以做到,比如Emeditor,sublime text ,但在linux和mac上相关的编辑器有这个功能的不多,另外大多服务器上都是无图形界面的,因此收集了几条针对linux命令行备忘,实现批量替换文本内容的命令: 批量查找某个目下文件的包含的内容 grep -rn "要找查找的文本" ./ 通过sed批量查找并替换文件内容. sed -i "s/要找查找的文本/替换后的文本/g"grep -rl "要找查找的文本&

如何在Mac上使用Netstat命令

macOS上的netstat命令是一个终端命令,用于显示有关Mac网络通信的详细信息.网络通信包括Mac通过所有端口和所有应用程序与外界进行交流的所有方式.掌握netstat可以帮助您了解计算机之间的连接以及原因. 运行Netstat 默认情况下,netstat命令在Mac上可用.您不需要下载或安装它. 要运行netstat,请在“ 应用程序” >“ 实用程序” >“ 终端”中打开“终端”窗口.类型netstat的,然后按Enter键执行命令. 屏幕上会滚动滚动显示大量隐秘文本.这是正常现象,

在Mac上配置adb命令

在Mac OS中使用adb命令时,应进行变量配置,步骤如下: 一.终端中输入 cd ~ 二.输入touch .bash_profile 回车 touch:如果没有,则创建文件,如果有,更新一下文件时间 三.输入open -e .bash_profile open:打开文件 回车后会在TextEdit中打开这个文件(如果未配置过环境变量,应该是个空白文件).在文件中加如以下内容 export PATH=${PATH}:/Users/bj-zhangqm/worksoft/android-sdk-m

mac上使用imagealpha命令对图片进行压缩批处理

1 #! /bin/bash 2 3 4 #BASE_DIR="/Users/jiading/Documents/basepng"; 5 #OUTPUT_DIR="/Users/jiading/Documents/output"; 6 BASE_DIR="/Users/jiading/Documents/SwordsmanApp/art/序列帧动画/实验-分段版/9_选择迷你板固定"; 7 OUTPUT_DIR="/Users/jiad

mac上的命令行工具

转自爱米家的博客,原文:<Eight Terminal Utilities Every OS X Command Line User Should Know> OS X  的Terminal 终端开辟了强大的UNIX实用工具和脚本的世界.如果你是从Linux转移过来的用户,你会在OS X 终端上发现很多熟悉的命令.但是即使是高级用户也经常会忽略掉其实OS X终端也会有一系列在其他的操作系统中没有的终端工具.当你学习了以下这些只适用于Mac的课程会让你更高效的使用Mac命令行同时消除UNIX系统

Linux的sed命令

一.初识sed 在部署openstack的过程中,会接触到大量的sed命令,比如 # Bind MySQL service to all network interfaces.sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf 那么这条命令是什么意思?接下来介绍sed命令答案自然就揭晓了.二.sed简介 sed:是一个编辑器,是一个强大的文件处理工具. sed作用:用来替换.删除,更新文件中的内容.sed能自动处理一个或多个文件. sed原理:sed

MAC上搭建IOS自动化环境

Mac上搭建RF环境步骤(以及一些坑): mac自带python环境,python --version 检查python环境. 注意:         1.不要使用mac自带的python环境,因为自带的是64位的,wxPython需要只有32位的,所以python使用32位的(自己下载32 python 2.7安装).         2.不要卸载mac自带的python环境,mac中的某些应用会用到python         3.安装完32位的python环境之后,命令行验证python的

linux---(6/27)sed命令

sed 是一种新型的,非交互式的编辑器.它能执行与编辑器 vi 和 ex 相同的编辑任务.sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令.指定文件名,然后在屏幕上查看输出. sed 编辑器没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果.默认情况下,所有的输出行都被打印到屏幕上. sed 工作过程 sed 编辑器逐行处理文件(或输入),并将输出结果发送到屏幕. sed 的命令就是在 vi和 ed/ex 编辑器中见到的那些. sed 把当前正在处理的行保