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'
find . -print
: 使用find
命令查找当前目录下所有的文件和子目录s;[^/]*/;|---;g;
: 将每个目录(路径前的所有非斜杠字符+'/')替换为|---
字符串,s;---|; |;g
: 将每个目录路径中的---|
字符串替换为|
和空格字符,对齐目录