Linux之sed命令(包含MacOS使用方法)

Linux之sed命令

一、概述

Linux下的sed命令是一种流编辑器,用于在命令行中对文本进行处理,常见的操作如:添加、修改、删除、追加等。

当所用系统为MacOS时,直接使用sed会出现command a expects \ followed by text此类报错,处理方法如下:

解决方案1:sed命令改写 --> 添加一个空串

sed -i 's/apple/applewatch/g' /tmp/a.txt

改写为

sed -i '' 's/apple/applewatch/g' /tmp/a.txt
解决方案2:调整mac下的sed命令 --> 安装gnu-sed

执行:

shell 复制代码
brew install gnu-sed
alias sed=gsed

本人建议使用第二种方式解决,一劳永逸。

extra:在使用sed新增一行时会使用到\,macOS会把反斜杠解析为命令结束字符,后面不允许携带新字符,导致报错 extra characters after \ at the end of a command,只能通过把命令分割成两行内容。示例:

shell 复制代码
原命令:sed -i '$a new line' /tmp/a.txt
macOS下需要写成:
sed -i '' -e '$a\
new line' /tmp/a.txt

二、用法

以下介绍sed命令常用方法。

1、文件末尾追加一行

shell 复制代码
sed -i '$a <new_line>' <file_name>
示例:sed -i '$a this is a new line' /tmp/sed.txt

2、指定行后新增一行

shell 复制代码
sed -i '/<specific_line>/a\<new_line>' <file_name>
示例:sed -i '/an existing line/a\this is a new next line' /tmp/sed.txt

其中<specific_line>可以为模糊匹配,例如为line但有多行都包含line,此时会在所有包含line关键字的行后都新增一行。

此规则以下都适用。

3、指定行前新增一行

shell 复制代码
sed -i '/<specific_line>/i\<new_line>' <file_name>
示例:sed -i '/an existing line/i\this is a new upper line' /tmp/sed.txt

4、修改指定行

shell 复制代码
sed -i 's/<old_content>/<new_content>/g' <file_name>
示例:sed -i 's/magic_switch=0/magic_switch=1/g' /tmp/sed.txt

5、删除指定行

shell 复制代码
sed -i '/<specific_line>/d' <file_name>
示例:sed -i '/trash_line/d' /tmp/sed.txt
相关推荐
不才小强8 分钟前
Linux系统常用命令
linux·运维·网络
SPC的存折1 小时前
8、Ansible之Playbook---Roles
linux·服务器·ansible
Kira Skyler1 小时前
BPF KPROBE编程中的ctx是什么?
linux
三万棵雪松3 小时前
【Linux 物联网网关主控系统-Linux主控部分(三)】
linux·物联网·嵌入式linux
萝卜白菜。3 小时前
TongWeb7.0 集中管理heimdall配置文件说明
linux·运维·服务器
IMPYLH4 小时前
Linux 的 install 命令
linux·运维·服务器·bash
浦信仿真大讲堂4 小时前
CST FAQ 006:Linux系统CST安装指导
linux·运维·服务器·仿真软件·达索软件
AI+程序员在路上5 小时前
Linux C 条件变量阻塞线程用法:等待时CPU占用率为0
linux·运维·c语言
HABuo5 小时前
【linux线程(三)】生产者消费者模型(条件变量阻塞队列版本、信号量环形队列版本)详细剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
Milu_Jingyu5 小时前
Windows与Ubuntu文件共享详细指南
linux·windows·ubuntu