linux中sed的用法

sed(Stream Editor)是 Linux 系统中一个强大的流式文本编辑器,它可以对文本进行替换、删除、插入、选取等操作,并且可以在不修改原始文件的情况下输出处理后的结果,也可以直接修改文件内容。以下是 sed 的详细用法及示例:

sed [选项] '命令' 文件
-i表示直接修改文件内容

1. 替换操作

使用 s 命令进行替换,语法为 s/原字符串/新字符串/修饰符,其中修饰符常见的有 g(全局替换)。sed 的替换命令 s 并不强制要求使用 / 作为分隔符,你可以选择其他字符作为分隔符,例如 #|@ 等。

# 将每行的第一个"red" 替换为 "green"
sed 's/red/green/' data.txt

# 输出结果
apple is green
banana is yellow
cherry is green

# 使用 g 修饰符,将每行中所有的 "red" 替换为 "green"
sed 's/red/green/g' data.txt
# 使用 # 作为分隔符进行替换
sed 's#http://example.com#https://newexample.com#' test.txt

如果要直接修改文件内容,可以使用 -i 选项:

sed -i 's/red/green/g' data.txt

 结合正则表达式进行替换

sed 's/[0-9]\+/99/g' data.txt
#[0-9]\+ 表示匹配一个或多个数字。
sed 's/like\(s\)\?/love/g' data.txt
#like\(s\)\? 表示匹配 "like" 或者 "likes"。

2.删除操作

使用 d 命令删除指定的行。

# 删除包含 "banana" 的行
sed '/banana/d' data.txt

删除指定范围的行

# 删除从包含 "Start" 的行到包含 "End" 的行
sed '/Start/,/End/d' data.txt

删除空行

sed '/^$/d' data.txt
/^$/ 是一个正则表达式,用于匹配空行(行的开头 ^ 紧接着行的结尾 $)。

 删除以特定字符开头的行

# 删除以 # 开头的行
sed '/^#/d' data.txt

3. 插入操作 

若要直接修改原文件,可以使用 -i 选项。如无,则在工作台上打印出内容。使用 a/i 命令在指定行之后/前插入文本。

sed '2i\new line' test.txt
# 在包含 "banana" 的行之后插入 "extra line"
sed '/banana/a extra line' data.txt

插入多行文本

插入多行文本时,每行之间用反斜杠 \ 分隔。例如在指定行号前插入多行:sed '行号i\第一行文本\第二行文本' 文件名
sed '2i\first new line\second new line' test.txt

若要直接修改原文件,可以使用 -i 选项。

sed -i '2a\new line' test.txt

结合正则表达式插入

在 test.txt 文件中以 l 开头的行后插入 inserted line,命令如下:
sed -i '/^l/a\inserted line' test.txt

4.选取操作

sed 命令里,-n 选项和 p 命令经常配合使用。-n为抑制输出。p为输出。默认情况下,sed 会将处理的每一行都输出到标准输出。而使用 -n 选项后,sed 不会自动输出每一行,只有在明确指定输出时才会输出内容。

# 输出包含 "Line 3" 的行
sed -n '/Line 3/p' data.txt

# 输出包含 "Line" 或者 "Text" 的行
sed -n '/Line\|Text/p' data.txt

# 输出以 "Line" 开头的行
sed -n '/^Line/p' data.txt


# 输出以 "!" 结尾的行
sed -n '/!$/p' data.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值