Linux常用命令-sed

Linux常用命令-sed

sed - stream editor for filtering and transforming text

sed是linux系统中强大的文本处理工具,常用于过滤和转换文本。也称为"流编辑器(stream editor)",因为它主要用于按行处理文本流。

基础命令

# 替换每行中的第一个匹配项
sed 's/old_text/new_text/' filename

# 替换每行中的所有匹配项
sed 's/old_text/new_text/g' filename

# 直接修改文件
sed -i 's/old_text/new_text/g' filename

# 修改的同时备份原文件到 filename.bak
sed -i.bak 's/old_text/new_text/g' filename

# -n: 关闭自动打印
# 打印第5行的内容, p(print)
sed -n '5p' filename

# 打印匹配的行号'='
sed -n '/pattern/=' filename

# 删除第5行的内容, d(delete)
sed '5d' filename

# 在第5行前插入内容, i(insert)
sed '5i\new_text' filename

# 在第5行后添加内容, a(append)
sed '5a\new_text' filename

常用命令

sed可以根据正则表达式匹配

# 删除空行
sed '/^$/d' filename

# 删除行首空格或tab
sed 's/^[ \t]*//g' filename

# 删除行尾空格或tab
sed 's/[ \t]*$//g' filename

# 删除两位数字
sed 's/[0-9]\{2\}//g'

# 在匹配行前插入内容, i(insert)
sed '/pattern/i\new_text' filename

# 在匹配行后插入内容, a(append)
sed '/pattern/a\new_text' filename

# 替换路径,用"#"做分隔符
sed -i 's#/var/www/html#/usr/local/www#g' *.conf

# 在匹配行追加内容,在以IP开头的行"^IP" 的末尾"$" 追加"|192.168.0.1"
sed '/^IP/ s#$#|192.168.0.1#' filename

用find+sed命令模拟tree命令

# -e: 直接在命令列模式上进行 sed 的动作编辑,可以在一行内执行多条命令
find . -print | sed -e 's;[^/]*/;|---;g;s;---|; |;g'
  1. find . -print: 使用find命令查找当前目录下所有的文件和子目录
  2. s;[^/]*/;|---;g;: 将每个目录(路径前的所有非斜杠字符+'/')替换为 |--- 字符串,
  3. s;---|; |;g: 将每个目录路径中的 ---| 字符串替换为 | 和空格字符,对齐目录
posted @ 2022-12-10 15:19  rustling  阅读(39)  评论(0编辑  收藏  举报