【Linux】文本处理命令sed

基本语法
sed [选项] '命令' 文件...
  • 选项:可以是 -e, -n, -i 等。
  • 命令sed 的操作命令,可以是替换、删除、插入等。
  • 文件:要处理的文件名。
常用选项
  • -e:允许直接在命令行上进行编辑。
  • -n:禁止自动打印模式空间的内容。
  • -i:直接修改文件内容,而不打印到标准输出。
基本命令
  • s:替换命令。

    • 格式:s/原字符串/新字符串/
    • 例如:sed 's/old/new/' file.txtfile.txt 中所有的 “old” 替换为 “new”。
  • d:删除命令。

    • 格式:d
    • 例如:sed '1d' file.txt 删除 file.txt 的第一行。
  • i:插入命令。

    • 格式:i\ 在第n行前插入的文本
    • 例如:sed '5i\This is a new line' file.txtfile.txt 的第五行前插入一行新文本。
  • a:追加命令。

    • 格式:a\ 在第n行后追加的文本
    • 例如:sed '5a\This is a new line' file.txtfile.txt 的第五行后追加一行新文本。
  • c:更改命令。

    • 格式:c\ 替换第n行的文本
    • 例如:sed '5c\This is a new line' file.txtfile.txt 的第五行替换为 “This is a new line”。
模式空间和地址
  • $:表示最后一行。
  • ^:表示第一行。
  • n:表示第 n 行。
  • n,m:表示从第 n 行到第 m 行。
示例
  • 替换文件中所有的 “old” 为 “new”:

    sed -i 's/old/new/g' file.txt
    
  • 删除文件中的第三行:

    sed -i '3d' file.txt
    
  • 在文件的第五行前插入一行文本 “This is a new line”:

    sed -i '5i\
    This is a new line' file.txt
    
  • 在文件的第五行后追加一行文本 “This is a new line”:

    sed -i '5a\
    This is a new line' file.txt
    
  • 将文件的第五行替换为 “This is a new line”:

    sed -i '5c\This is a new line' file.txt
    

使用 -i 选项时,sed 会直接修改文件内容。如果你想要保留原始文件,可以省略 -i 选项,或者将输出重定向到另一个文件中。例如:

sed 's/old/new/' file.txt > newfile.txt

这将创建一个新文件 newfile.txt,其中包含修改后的内容,而原始文件 file.txt 保持不变。

小试牛刀
  • 1使用p命令打印/etc/password中的所有内容需求
sed "p" /etc/passwd
  • 2.使用-n选项,p命令打印/etc/password中的所有内容
sed -n 'p' /etc/passwd
  • 3.打印/etc/password第1行内容

    sed -n '1p' /etc/passwd
    
  • 4.打印/etc/password第1行到第5行内容

sed -n '1,5p' /etc/passwd
  • 5.打印/etc/password最后1行内容
sed -n '1,5p' /etc/passwd
  • 6.删除/password_back第1行内容
sed -i '1d' /pasword_back
  • 7.删除/password_back最后1行内容
sed -i '$ d' /pasword_back
  • 8.删除/password_back第1行到第3行内容
sed -i '1,3d' /pasword_back
  • 9.在/password_back最后1行的后面添加he11
sed "$ a\hell" /pasword_back
  • 10.在/password_back第5行的前面添加world
sed "5 a\hell" /pasword_back
  • 11.将/password_back第1行的内容替换为he11o world

    sed "1c\hello world" pasword_back
    
  • 12.将/etc/hosts文件中的内容添加到/password_back第3行之后

    sed "3r /etc/hosts" /pasword_back
    
  • 13.将/etc/passwd文件中的第1行到第3行写入到文件a.txt

    sed "1,3w a.txt" /etc/passwd
    
  • 14.将/etc/passwd中包含root字符的行写入到文件a.txt

    sed "/root/w a.txt" /etc/passwd
    
  • 15.将/etc/passwd中包含数字的行写入到文件a.txt

    sed "/[0-9]/w a.txt" /etc/passwd
    
  • 16.将passwd_backup中的第一个root替换为ROOT

    sed "s/root/ROOT/" passwd_backup
    
  • 17.将//password_back中的所有root替换为ROOT

    sed "s/root/ROOT/g" passwd_backup
    
  • 18.将/passwd_back中的所有/sbin/nologin替换为/bin/bash

    sed "s#/sbin/nologin#/bin/bash#g" passwd_backup
    
  • 19.将passwd_backup 中的空行替换掉

    sed "/^$/d" passwd_backup 
    
  • 20.将passwd_backup 中的第1行与第3行注释掉

    sed "1,3s/^/#&/" passwd_backup 
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抓跟ミgragon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值