linux sed命令

一、简介

sedstream editor的简称,也就是流编辑器。可以接受来自文件或者来自管道的流。

其语法格式为:

sed OPTIONS... [SCRIPT] [INPUTFILE...]

二、常用选项(OPTIONS)

  • -n 使用安静silent模式。在一般sed的用法中,所有来自stdin的内容一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来

  • -e 直接在指令列模式上进行 sed 的动作编辑

  • -f 直接将 sed 的动作写在一个文件内,-f filename则可以执行filename内的sed命令

  • -r 让sed命令支持扩展的正则表达式(默认是基础正则表达式)

  • -i 直接修改读取的文件内容,而不是由屏幕输出

实例:

假如我们有文件foxinbox.txt, 内容如下:

Knox in box.
Fox in socks.
Knox on fox in socks in box.
Socks on Knox and Knox in box. Fox in socks on box on Knox.

1、替换字符串:

sed 's/old_string/new_string/flags'  filename.txt

linux sed命令_第1张图片

note:默认情况下, sed 命令只处理每一行的第一个匹配字符。 如果需要全部匹配的话,加上g参数即可。表示全局替换

linux sed命令_第2张图片

note:替换每一行的第n次匹配字符。后面添加数字即可,数字表示第n次匹配。add a number flag such as 12, etc.:

例如只匹配第二次出现的box

linux sed命令_第3张图片

sed -i  's/1883/8883/' file.json

将file.json文件中的1883字符串替换为8883

查找file.json文件中 url字符串所在的行,只打印行号

line=$(grep -n "url" file.json | busybox awk -F ":" '{print $1}')
echo $line

将filename文件中,字符串"url"所在的一整行替换为this is replace line

sed -i '/url/c\ this is replace line'  filename

linux sed命令_第4张图片

这个文件有非常多的:作为分隔符,我们想更加直观地查看,

sed 's/:/\t/g' /etc/passwd

linux sed命令_第5张图片

ref:

Linux Sed命令详解

sed, a stream editor

Linux sed Command: How To Use the Stream Editor | phoenixNAP KB

Sed Command in Linux/Unix with examples - GeeksforGeeks

你可能感兴趣的:(计算机操作基础,linux,unix,服务器)