sed命令笔记250419

sed命令笔记250419

sed(Stream Editor)是 Linux/Unix 系统中强大的流编辑器,主要用于对文本进行过滤和转换(按行处理)。它支持正则表达式,适合处理文本替换、删除、插入等操作。以下是 sed 的详细解析:


一、基本语法

sed [选项] '命令' 输入文件
sed [选项] -f 脚本文件 输入文件  # 从脚本文件读取命令

二、常见选项

选项说明
-n静默模式,仅输出处理后的行(常与 p 命令搭配)
-e指定多个命令,如 sed -e '命令1' -e '命令2'
-i直接修改文件内容(慎用,建议先备份)
-i.bak 修改前备份原文件为 .bak
-E, -r, --regexp-extended使用扩展正则表达式(如 +, |, () 等)
-f从指定文件中读取命令

三、编辑命令(核心)

1. 替换命令 s
s/pattern/replacement/flags
  • flags 常用值:
    • g:全局替换(默认每行仅替换第一个匹配)
    • p:替换后打印行(需与 -n 选项配合)
    • i:忽略大小写
    • 数字:替换第 N 个匹配
  • 示例
    echo "hello world" | sed 's/hello/hi/'      # 输出 hi world
    echo "a a a" | sed 's/a/b/2'               # 替换第二个a:a b a
    
2. 删除命令 d
sed '地址定界d' 文件  # 删除匹配行
sed '3d' file      # 删除第3行
sed '/^$/d' file   # 删除所有空行
3. 插入/追加行
命令说明
i\在行前插入内容(如 sed '2i\插入内容' file
a\在行后追加内容(如 sed '2a\追加内容' file
4. 其他命令
命令说明
p打印行(常与 -n 配合:sed -n '1p' file 打印第1行)
=显示行号(如 sed '=' file
y字符转换(如 sed 'y/abc/ABC/' 将a→A, b→B, c→C)
r读取文件并插入(如 sed '/pattern/r otherfile' file
w将匹配行写入文件(如 sed '/pattern/w output.txt' file

四、地址定界(指定操作范围)

格式说明
n第 n 行(如 sed '3s/a/b/' 修改第3行)
n,m第 n 到 m 行(如 1,5d 删除1-5行)
$最后一行
/pattern/匹配正则的行(如 /^#/d 删除注释行)
n,+m从第n行到其后m行(如 2,+3 表示2-5行)
!取反(如 3!d 删除除第3行外的所有行)

五、替换命令 s 的进阶用法

1. 分组与反向引用

sed 命令中的分组(Grouping)是正则表达式的重要功能,通过 () 将部分模式标记为一个整体,并可通过反向引用在替换操作中重用这些分组内容。

echo "123-456" | sed -r 's/([0-9]+)-([0-9]+)/\2-\1/'  # 输出 456-123
  • () 分组,\1, \2 引用分组。 从 \1 开始, 第一个是 \1
  • ⚠️ sed 不支持 (?:) 语法,所有 () 均为捕获分组。

用sed替换文本 笔记250419
sed的分组替换,捕获组,反向引用 笔记250419

2. 特殊字符转义

若替换内容包含 /,可更换分隔符(如 s|/old|/new|)。

3. 动态替换

使用 & 引用匹配的整个内容:

echo "123" | sed 's/[0-9]\+/数字:&/'  # 输出 数字:123

分组详解

sed的分组替换,捕获组,反向引用 笔记250419

sed 命令中的分组(Grouping)是正则表达式的重要功能,通过 () 将部分模式标记为一个整体,并可通过反向引用在替换操作中重用这些分组内容。

⚠️ sed 不支持 (?:) 语法,所有 () 均为捕获分组。

一、分组的基本语法
1. 创建分组

使用 \(\) 包裹正则表达式(基础正则语法):

echo "abc123" | sed 's/\([a-z]\+\)[0-9]\+/\1/'  # 输出 abc
# 解析:
# - \([a-z]\+\) 匹配字母部分,并标记为分组1
# - \1 反向引用分组1的内容
2. 扩展正则表达式

若使用 -r(GNU sed)或 -E(macOS),可省略转义符:

echo "abc123" | sed -r 's/([a-z]+)[0-9]+/\1/'  # 输出 abc(更简洁)

二、分组的核心用途
1. 提取并重组内容
# 将日期格式从 "YYYY-MM-DD" 改为 "DD/MM/YYYY"
echo "2023-10-05" | sed -r 's/([0-9]{4})-([0-9]{2})-([0-9]{2})/\3\/\2\/\1/'
# 输出:05/10/2023
# 分组1: 2023, 分组2: 10, 分组3: 05
2. 保留部分原始内容
# 在匹配的单词两侧添加方括号
echo "hello world" | sed -r 's/(\b\w+\b)/[\1]/g'
# 输出:[hello] [world]
3. 动态调整顺序
# 交换 "key: value" 为 "value: key"
echo "name: John" | sed -r 's/([^:]+):\s*(.+)/\2: \1/'
# 输出:John: name

三、高级分组技巧
1. 多级分组(嵌套分组)

分组按左括号顺序编号,从外到内、从左到右:

echo "12-34-56" | sed -r 's/(([0-9]{2})-){2}([0-9]{2})/\1\3/'
# 输出:12-3456
# 分组1: 12-34-, 分组2: 34, 分组3: 56

用sed替换文本 笔记250419
sed的分组替换,捕获组,反向引用 笔记250419

2. 与替换标志结合

结合 g(全局)或 i(忽略大小写)等标志:

# 将所有重复的单词合并(如 "hello hello" → "hello")
echo "hello hello world" | sed -r 's/\b(\w+)\b \1/\1/g'
# 输出:hello world
3. 非捕获分组(sed不支持)

⚠️ sed 不支持 (?:) 非捕获分组语法,所有 () 均为捕获分组。


四、分组在地址定界中的应用

分组也可用于匹配行的条件判断:

# 删除包含重复单词的行(如 "apple apple")
sed -r '/\b(\w+)\b \1/d' file.txt


六. 示例场景

1. 替换文件内容
sed -i 's/foo/bar/g' file.txt        # 将所有foo替换为bar(直接修改文件)
sed -i.bak 's/old/new/' file.txt     # 修改前备份原文件为file.txt.bak
2. 删除操作
sed '/^#/d' file.conf                # 删除所有注释行(以#开头)
sed '/^$/d; /^$/d' file              # 删除连续空行(保留单个空行需更复杂处理)
3. 处理指定行
sed '2,5s/yes/no/' file             # 将2-5行的yes替换为no
sed '$a\This is the end' file        # 在最后一行后追加内容
4. 多重命令
sed -e 's/foo/bar/' -e '/baz/d' file
sed 's/a/A/; s/b/B/' file           # 多个命令用分号分隔
1. 处理日志文件
# 提取日志中的 IP 和访问路径(假设格式:IP - [时间] "GET /path HTTP/1.1")
cat access.log | sed -r 's/([0-9.]+).*"GET (\/[^ ]+).*/\1 \2/'
# 输出:192.168.1.1 /index.html
2. 格式化配置文件
# 将 "key=value" 改为 "key = value"
sed -r 's/([^=]+)=/\1 = /' config.ini
3. 处理 CSV 数据
# 交换 CSV 前两列(假设分隔符为逗号)
echo "apple,123,fruit" | sed -r 's/([^,]+),([^,]+)/\2,\1/'
# 输出:123,apple,fruit

七、注意事项

  1. -i 选项风险:直接修改原文件,建议先不加 -i 测试命令。

  2. 正则兼容性:默认支持基础正则,使用 -r-E 启用扩展正则。

  3. 行处理机制sed 逐行处理,适合大文件,但复杂操作可能不如 awk 灵活。

  4. 转义括号:在基础正则中需用 \(\),扩展正则(-r-E)可直接用 ()

  5. 分组数量:最多支持 9 个分组(\1\9)。

  6. 性能:复杂分组可能降低处理速度,尤其在大型文件中。

用sed替换文本 笔记250419
sed的分组替换,捕获组,反向引用 笔记250419










1️⃣ 参考 1

sed(Stream Editor)是 Linux/Unix 中强大的流式文本处理工具,主要用于对文本进行替换、删除、插入等操作。以下是 sed 的详细用法:


基本语法

sed [选项] '命令' 输入文件
sed [选项] -f 脚本文件 输入文件

常用选项

选项作用
-n仅输出处理后的行(默认会输出所有行)
-i直接修改文件内容(谨慎使用,建议先备份)
-e指定多个命令(例如 sed -e '命令1' -e '命令2'
-f从脚本文件读取命令
-E, -r, --regexp-extended使用扩展正则表达式(简化语法)

常用命令

1. 替换文本s
sed 's/原内容/替换内容/[标志]'
  • 标志
    • g:全局替换(默认只替换每行第一个匹配项)
    • p:打印替换后的行(常与 -n 选项一起使用)
    • i:忽略大小写(需配合 -r-E 使用扩展正则)

示例

sed 's/apple/orange/g' file.txt       # 替换所有 apple 为 orange
sed -n 's/foo/bar/p' file.txt         # 仅打印发生替换的行
sed -i 's/old/new/' file.txt          # 直接修改文件
sed 's|/usr/bin|/usr/local/bin|g'     # 使用 | 替代 / 作为分隔符

2. 删除行d
sed '地址定界符 d' 文件

示例

sed '3d' file.txt           # 删除第3行
sed '/pattern/d' file.txt   # 删除匹配 pattern 的行
sed '1,5d' file.txt         # 删除1-5行
sed '/^$/d' file.txt        # 删除所有空行

3. 插入/追加行ia
  • i:在指定行前插入
  • a:在指定行后追加

示例

sed '2i Insert this line' file.txt    # 在第2行前插入一行
sed '/pattern/a Append this line'     # 在匹配行后追加一行

4. 替换指定行号
sed '2s/old/new/' file.txt       # 替换第2行的第一个 old 为 new
sed '1,5s/old/new/g' file.txt    # 替换1-5行的所有 old 为 new

5. 地址定界(指定操作范围)
  • 行号sed '3,5命令'(操作第3-5行)
  • 正则匹配sed '/pattern/命令'(操作匹配 pattern 的行)

示例

sed '/start/,/end/d' file.txt    # 删除从 start 到 end 的所有行
sed '/^#/d' file.txt             # 删除所有注释行(以 # 开头)

高级用法

1. 多命令执行
sed -e 's/foo/bar/' -e '/pattern/d' file.txt
# 或
sed 's/foo/bar/; /pattern/d' file.txt
2. 保持空间(Hold Space)
  • h:将模式空间内容复制到保持空间
  • H:将模式空间内容追加到保持空间
  • g:将保持空间内容复制到模式空间
  • G:将保持空间内容追加到模式空间

示例(反转文件行序):

sed -n '1!G;h;$p' file.txt

3. 文件操作
sed 'r 文件2' 文件1        # 将文件2的内容插入到文件1的每行后
sed '/pattern/w 新文件' file.txt  # 将匹配的行写入新文件

4. 转换字符y
sed 'y/abc/XYZ/' file.txt   # 将 a→X, b→Y, c→Z(类似 tr 命令)

常见使用场景

  1. 批量替换文件内容

    sed -i 's/old/new/g' *.txt
    
  2. 删除空行或注释行

    sed -i '/^$/d; /^#/d' file.conf
    
  3. 提取特定内容

    sed -n '/error/p' log.txt > errors.log
    
  4. 行号处理

    sed = file.txt | sed 'N; s/\n/ /'   # 显示行号(类似 nl)
    
  5. 批量修改配置

    sed -i '/^Port /s/22/2222/' /etc/ssh/sshd_config  # 修改SSH端口
    

注意事项

  • -i 选项会直接修改文件,建议先不加 -i 测试命令。
  • 正则表达式中的特殊字符(如 *, $, ^)需要转义。
  • macOS 的 sed 与 Linux 存在差异(如 -i 必须带参数:sed -i '' ...)。

通过灵活组合上述命令,可以高效处理文本任务!










2️⃣ 参考 2

sed命令详解

一、sed是什么?

sed(Stream Editor) 是 Linux 和类 Unix 系统中的流式文本编辑器,用于对文本进行高效处理和转换。它逐行读取文件,通过命令对文本进行增删改查操作,支持正则表达式,适合处理大量文本数据。

二、核心语法结构

sed [选项] '命令' 输入文件
  • 常用选项
    • -n:安静模式(不自动打印所有行,需配合p命令显式输出)。
    • -i:直接修改文件内容(慎用,建议先不加-i测试)。
    • -e:执行多个命令(如 sed -e 's/a/b/' -e 's/c/d/' file)。
    • -f:从脚本文件读取命令(sed -f script.sed file)。

三、基础命令与示例

1. 打印文本
  • 打印第2行
    sed -n '2p' file.txt
    
  • 打印第1-3行
    sed -n '1,3p' file.txt
    
  • 打印包含"error"的行
    sed -n '/error/p' file.txt
    
2. 替换文本
  • 替换每行第一个匹配项
    sed 's/old/new/' file.txt
    
  • 全局替换(所有匹配项)
    sed 's/old/new/g' file.txt
    
  • 替换第3行的内容
    sed '3s/old/new/' file.txt
    
3. 删除文本
  • 删除第3行
    sed '3d' file.txt
    
  • 删除空行
    sed '/^$/d' file.txt
    
  • 删除包含"error"的行
    sed '/error/d' file.txt
    
4. 插入/追加文本
  • 在第2行前插入文本
    sed '2i\Insert this line' file.txt
    
  • 在第2行后追加文本
    sed '2a\Append this line' file.txt
    

四、高级功能

1. 多行处理命令
  • 合并下一行到模式空间
    sed 'N' file.txt  # 合并两行(如处理跨行日志)
    
  • 删除多行组中的单行
    sed 'D' file.txt  # 删除模式空间的第一行
    
  • 打印多行组中的单行
    sed -n 'P' file.txt  # 打印模式空间的第一行
    
2. 模式空间与保持空间
  • 复制模式空间到保持空间
    sed 'h' file.txt  # h命令
    
  • 将保持空间内容覆盖模式空间
    sed 'g' file.txt  # g命令
    
  • 示例:交换两行内容
    echo -e "line1\nline2\nline3" | sed -n '1h;2x;p'
    # 输出:line2(原第1行和第2行交换)
    
3. 分支与循环
  • 条件分支
    sed '/pattern/b label' file.txt  # 匹配pattern则跳转到label
    
  • 循环替换
    echo "This, is, a, test" | sed -n ':start; s/,//1p; t start'
    # 输出:This is a test(逐步删除逗号)
    
4. 正则表达式增强
  • 子字符串匹配
    echo "System Administrator" | sed 's/\(System\) Administrator/\1 User/'
    # 输出:System User(\1引用第一个括号内容)
    
  • 扩展正则表达式(使用-r-E):
    sed -r 's/(http|https)://\1/g' file.txt  # 提取URL协议
    

五、实用技巧

  1. 批量修改文件
    sed -i 's/旧域名/新域名/g' *.html  # 修改所有HTML文件中的域名
    
  2. 提取特定行
    sed -n '10,20p' data.log  # 输出第10-20行
    
  3. 删除空行和注释
    sed -r '/^$|^#/d' config.conf  # 删除空行和以#开头的行
    
  4. 复杂替换
    sed 's/old/new/2' file.txt  # 仅替换每行第二个匹配项
    

六、总结

  • 适用场景:日志处理、配置文件修改、批量文本替换、数据分析预处理。
  • 注意事项
    • 使用-i前务必备份文件。
    • 正则表达式中的特殊字符(如/*)需转义。
    • 多命令执行时,用分号或-e分隔命令。

掌握sed可显著提升文本处理效率,建议通过实际案例练习巩固。










3️⃣ 参考 3

以下是关于 sed 命令的详细解析,涵盖其基本用法、核心命令、选项、高级功能及实际示例:


1. 什么是 sed

  • 全称:Stream Editor(流编辑器)。
  • 功能:对文本流进行编辑,支持正则表达式,常用于文本处理、替换、删除、插入等操作。
  • 特点
    • 非交互式处理,适合脚本自动化。
    • 处理时将文本暂存到“模式空间”(Pattern Space)中,处理后再输出。

2. 基本语法

sed [选项] '命令' 文件
sed [选项] -f 脚本文件 文件
  • 常用选项
    • -n:抑制默认输出(仅打印处理后的行)。
    • -i:直接修改原文件(可加后缀备份,如 -i.bak)。
    • -f 脚本文件:从文件中读取 sed 命令。
    • -e:在命令行中执行多个命令。

3. 核心命令

(1) 替换(s 命令)
  • 语法s/旧字符串/新字符串/标志
  • 标志
    • g:全局替换(替换所有匹配项,默认仅替换第一个)。
    • p:替换后打印该行。
    • w 文件:将替换后的行写入指定文件。
  • 示例
    # 替换文件中所有出现的 "apple" 为 "banana"
    sed 's/apple/banana/g' file.txt# 直接修改文件并备份
    sed -i.bak 's/apple/banana/g' file.txt# 替换每行最后一个匹配项
    sed 's/apple/banana/\;' file.txt  # 注意:此处 `\;` 表示最后一个匹配项
    
(2) 删除(d 命令)
  • 语法地址 d
  • 示例
    # 删除第3行
    sed '3d' file.txt# 删除包含 "error" 的行
    sed '/error/d' file.txt# 删除第5到第10行
    sed '5,10d' file.txt
    
(3) 打印(p 命令)
  • 语法地址 p
  • 示例
    # 打印第5行(需配合 `-n`)
    sed -n '5p' file.txt# 打印包含 "warning" 的行
    sed -n '/warning/p' file.txt
    
(4) 插入与追加
  • 插入(i:在指定行前插入文本。
  • 追加(a:在指定行后追加文本。
  • 示例
    # 在第3行前插入 "New Line"
    sed '3i\New Line' file.txt# 在匹配 "start" 的行后追加 "Added Text"
    sed '/start/a\Added Text' file.txt
    
(5) 行号与模式匹配
  • 行号地址:直接指定行号(如 3 表示第3行)。
  • 正则表达式:用 /pattern/ 匹配行。
  • 组合地址start,end/pattern1/,/pattern2/
  • 示例
    # 删除第2到第5行
    sed '2,5d' file.txt# 从 "START" 到 "END" 的行全部删除
    sed '/START/,/END/d' file.txt
    

4. 高级功能

(1) 分支与标签(bt:label
  • 用途:实现条件跳转或循环。
  • 示例
    # 标签跳转示例
    sed -e ':loop' -e '/pattern/!b end' -e 's/pattern/replacement/' -e 'b loop' -e ':end' file.txt
    
(2) 缓冲区操作(hHgG
  • 用途:暂存和恢复文本。
  • 命令
    • h:将模式空间内容存入缓冲区。
    • H:追加模式空间内容到缓冲区。
    • g:用缓冲区内容替换模式空间。
    • G:追加缓冲区内容到模式空间。
  • 示例
    # 将当前行与下一行合并
    sed -e 'N; s/\n/ /' file.txt
    
(3) 扩展正则表达式
  • 支持sed 支持正则表达式匹配,如 ^(行首)、$(行尾)、.*(任意字符)等。
  • 示例
    # 删除以 "#" 开头的行
    sed '/^#/d' file.txt# 替换行尾的数字
    sed 's/[0-9]$//g' file.txt
    

5. 实际应用示例

示例1:替换字符串并修改文件
# 将文件中的 "old" 替换为 "new",并备份原文件
sed -i.bak 's/old/new/g' config.txt
示例2:删除特定行
# 删除包含 "error" 的行,并输出结果到新文件
sed '/error/d' log.txt > cleaned_log.txt
示例3:插入文本
# 在文件开头插入 "Header Line"
sed '1i\Header Line' file.txt
示例4:结合正则表达式
# 将所有以数字开头的行替换为空行
sed '/^[0-9]/s/.*/ /' data.txt
示例5:多命令组合
# 删除第5行,替换第10行的 "text" 为 "new"
sed '5d;10s/text/new/' example.txt

6. 注意事项

  1. 默认行为sed 默认输出所有行,修改仅在内存中临时生效,需用 -i 保存。
  2. 特殊字符转义:若替换内容包含 /& 等,需转义或更换分隔符(如 s|old|new|)。
  3. 多行处理:用 N 命令将下一行加入模式空间,实现多行操作。

7. 总结

sed 是 Linux 下强大的文本处理工具,适用于:

  • 快速替换、删除、插入文本。
  • 结合正则表达式进行复杂匹配。
  • 脚本自动化文本处理任务(如日志清理、配置文件修改)。

通过灵活组合命令和选项,可以高效完成各种文本编辑需求。










4️⃣ 参考 4

sed 命令详解

sed(Stream Editor,流编辑器)是 Unix/Linux 下强大的文本处理工具,用于对文本流(文件或标准输入)进行过滤和转换。它逐行读取输入,根据指定的脚本对每行数据进行处理,最终输出处理结果。

一、基本语法
sed [选项] '脚本命令' 输入文件

sed [选项] -f 脚本文件 输入文件
二、常用选项
选项说明
-n取消默认输出(仅输出被脚本处理的行)。
-e执行指定的脚本命令(可省略,直接跟单引号脚本)。
-f file从文件中读取脚本命令。
-i直接修改输入文件(危险!建议先备份,可通过 -i.bak 生成备份)。
-r使用扩展正则表达式(默认使用基本正则表达式)。
-s分隔多个文件时,视为独立文件处理(不合并成一个流)。
-v显示版本信息。
三、核心工作流程
  1. sed 从输入中读取一行数据,存入模式空间(Pattern Space)
  2. 对模式空间中的内容应用脚本中的所有命令。
  3. 处理完成后,默认将模式空间的内容输出到标准输出(可通过 -n 禁用)。
  4. 清空模式空间,读取下一行,重复上述过程。
四、常用命令(按功能分类)

1. 替换命令 s

语法

s/旧字符串/新字符串/[修饰符]
  • 修饰符
    • g:全局替换(替换行中所有匹配项,而非第一个)。
    • 数字:替换第 n 个匹配项(如 s/old/new/2 替换第二个匹配项)。
    • i:不区分大小写(仅在扩展正则中有效,或配合 -r 使用)。

示例

  • 替换每行第一个 applebanana
    sed 's/apple/banana/' file.txt
    
  • 全局替换所有 applebanana
    sed 's/apple/banana/g' file.txt
    
  • 替换以 http:// 开头的字符串为 https://(正则匹配):
    sed 's/^http:/https:/' file.txt
    
  • 使用其他分隔符(避免转义斜杠):
    sed 's#http://#https://#' file.txt  # 用 # 代替 / 作为分隔符
    

2. 删除命令 d

语法

地址范围d  # 省略地址则匹配所有行

示例

  • 删除包含 error 的行:
    sed '/error/d' file.txt
    
  • 删除第 5 行:
    sed '5d' file.txt
    
  • 删除空行:
    sed '/^$/d' file.txt  # 或 sed -e '/^\s*$/d' 处理包含空格的空行
    

3. 插入与附加命令 ia

  • i(插入):在匹配行的上方插入新行。
  • a(附加):在匹配行的下方插入新行。

语法

地址范围i\  
新行内容  
地址范围a\  
新行内容  

示例

  • 在包含 header 的行上方插入 # Start
    sed '/header/i\# Start' file.txt
    
  • 在文件末尾添加一行 EOF
    sed '$a\EOF' file.txt  # $ 表示最后一行
    

4. 修改命令 c

语法

地址范围c\  
新内容  

功能:将匹配行替换为指定的新内容。
示例

  • 将第 3 行替换为 new line
    sed '3c\new line' file.txt
    

5. 打印命令 p

语法

地址范围p

功能:打印匹配行(需配合 -n 选项避免默认输出)。
示例

  • 仅打印包含 success 的行:
    sed -n '/success/p' file.txt
    
  • 打印第 2 到第 5 行:
    sed -n '2,5p' file.txt
    

6. 保留空间命令 hHgG

  • h:将模式空间内容复制到保留空间(覆盖保留空间)。
  • H:将模式空间内容追加到保留空间。
  • g:将保留空间内容复制到模式空间(覆盖模式空间)。
  • G:将保留空间内容追加到模式空间。

示例:交换两行内容(需配合地址范围):

sed -n '1h; 2G; p' file.txt  # 第1行存入保留空间,第2行追加保留空间内容并打印

7. 其他实用命令

  • =: 打印行号。
    sed '=' file.txt  # 输出每行内容及其行号(行号先于内容)
    
  • q: 退出sed(遇到匹配行时终止处理)。
    sed '/target/q' file.txt  # 遇到包含target的行时停止处理
    
  • s/// 简写:替换为空(删除匹配内容)。
    sed 's/old//' file.txt  # 删除第一个old
    sed 's/old//g' file.txt  # 删除所有old
    
五、地址范围

sed 命令可针对特定行或匹配模式的行执行,地址范围语法如下:

语法说明
nn 行(如 5 表示第5行)。
n,mn 行到第 m 行(如 2,10)。
/pattern/匹配包含 pattern 的行(如 /error/)。
/pattern1/,/pattern2/从匹配 pattern1 的行到匹配 pattern2 的行(包含这两行)。
$最后一行。
0不匹配任何行(无意义)。

示例

  • 对第 3 到第 5 行执行删除:
    sed '3,5d' file.txt
    
  • 对包含 start 到包含 end 的行之间的内容执行替换:
    sed '/start/,/end/s/old/new/g' file.txt
    
六、正则表达式注意事项
  1. 基本正则 vs 扩展正则

    • 默认使用基本正则表达式(BRE),特殊字符需转义(如 \. 表示点号,\( \) 表示分组)。
    • 使用 -r 选项启用扩展正则表达式(ERE),无需转义部分字符(如 \. 可写成 \.\.() 直接分组)。
  2. 常用正则符号

    • ^:行首,$:行尾。
    • .*:匹配任意字符(除换行符)零次或多次。
    • [abc]:匹配a、b、c中的任意一个。
    • \(text\)(BRE)或 (text)(ERE):分组,可通过 \1 引用第一个分组。

示例(分组引用)

  • 交换 a=123 b=456 中的值:
    sed 's/\(a=\)\(.*\) \(b=\)\(.*\)/\3\4 \1\2/'  # 基本正则,需转义括号
    sed -r 's/(a=)(.*) (b=)(.*)/\3\4 \1\2/'     # 扩展正则,无需转义括号
    
七、典型应用场景
  1. 替换文件中的字符串(谨慎使用 -i):
    sed -i 's/old_string/new_string/g' file.txt
    
  2. 删除注释或空行
    sed -e '/^#/d' -e '/^$/d' config.conf  # 删除以#开头的注释行和空行
    
  3. 提取日志中的特定信息
    logfile | sed -n '/ERROR/p'  # 仅输出包含ERROR的行
    
  4. 修改配置文件
    sed -i '/^user=/c\user=admin' config.ini  # 修改user配置项
    
  5. 处理 CSV/日志格式
    sed 's/,/ /g' data.csv  # 将逗号替换为空格
    
八、注意事项
  1. 备份文件:使用 -i 前务必确认,或通过 -i.bak 生成备份:
    sed -i.bak 's/old/new/g' file.txt  # 生成file.txt.bak备份
    
  2. 特殊字符转义:在替换内容中若包含 $/& 等字符,需用 \ 转义,或使用其他分隔符(如 #)。
  3. 多行处理:sed 默认逐行处理,若需处理多行,可结合 N(将下一行追加到模式空间)、D(删除模式空间中直到第一个换行符的内容)等命令,但逻辑较复杂,建议改用 awkperl
九、总结

sed 是文本处理的瑞士军刀,核心在于灵活运用地址范围替换/删除/插入等命令,结合正则表达式实现高效的文本转换。掌握基础命令后,通过实践可应对复杂场景(如日志清洗、配置文件修改等)。建议先通过 man sed 查阅完整文档,或使用在线工具(如 RegExr)调试正则表达式。










5️⃣ 参考 5

sed 是流编辑器(Stream Editor)的简称,是一种强大的文本处理工具,能在 Linux 系统中对文本进行各种操作,如替换、删除、插入等。以下是对它的详细讲解:

基本语法

  • sed [选项]... {script}... [输入文件]...
  • sed [选项]... --file=scriptfile [输入文件]...

其中,选项常见的有:

  • -e script :表示使用脚本 script 来处理输入的文件。
  • -f scriptfile :表示使用脚本文件 scriptfile 中的指令来处理输入的文件。
  • -n :只打印脚本处理后的结果,否则 sed 会默认输出所有行。
  • -i :直接修改文件内容,而不是输出到终端。

常见命令及操作

  • 替换(s) :格式为 s/查找内容/替换内容/选项 。例如,将文件中所有的 “apple” 替换为 “banana”,可以使用 sed 's/apple/banana/g' filename 。“g” 表示全局替换,如果不加 “g”,则每行只替换第一个匹配的 “apple”。
  • 删除(d) :用于删除指定的行。例如,删除文件的第 3 行,使用 sed '3d' filename ;删除文件中包含 “error” 的行,使用 sed '/error/d' filename
  • 插入(i 和 a)i 表示在指定行之前插入,a 表示在指定行之后插入。例如,在文件的第 2 行之前插入 “hello world”,使用 sed '2i hello world' filename ;在文件的第 4 行之后插入 “test”,使用 sed '4a test' filename
  • 打印(p) :用于打印指定的行。例如,打印文件的第 5 行,使用 sed -n '5p' filename ;打印文件中包含 “success” 的行,使用 sed -n '/success/p' filename

地址范围

地址范围可以指定要进行操作的行范围,格式为 [地址范围]操作 。例如:

  • sed '1,5d' filename :删除文件的第 1 到第 5 行。
  • sed '/start/,/end/s/old/new/g' filename :从包含 “start” 的行到包含 “end” 的行之间,将所有的 “old” 替换为 “new”。

其他功能

  • 多行操作 :可以用 \ 将命令分多行书写,提高可读性。例如:

    • `sed -e ‘1,5d’ \

    -e ‘/error/d’ filename`

  • 脚本文件 :可以将多个 sed 命令写入一个脚本文件,然后使用 -f 选项来执行。例如,创建一个脚本文件 script.sed,内容为:

    • 1,5d
    • /error/d

然后使用 sed -f script.sed filename 来执行。

  • 结合其他命令 :可以和其他命令结合使用,如 grepawk 等,实现更复杂的数据处理。例如,先用 grep 找出包含 “info” 的行,再用 sed 替换其中的某些内容:
    • grep 'info' filename | sed 's/old/new/g'










6️⃣ 参考 6

sed(全称:stream editor,即流编辑器)是一种在Unix、Linux和其他类Unix系统中常用的命令行文本处理工具。它可以对文本文件进行查找、替换、删除和插入等操作,非常适合用于批量文本处理任务。

基本语法

sed [选项] '命令' 输入文件

常用选项

  • -n:禁止自动打印模式空间,只有当命令明确要求输出时才打印。
  • -e:允许在命令行上添加多个编辑命令。
  • -f:从指定的文件中读取编辑命令。
  • -i:直接修改输入文件,而不是将结果输出到标准输出。

常用命令

  • p:打印当前模式空间的内容。
  • d:删除当前模式空间的内容。
  • s/old/new/:将当前模式空间中的“old”字符串替换为“new”字符串。
  • i\:在当前行之前插入文本。
  • a\:在当前行之后追加文本。
  • c\:将选定的行改为新的指定的文本。
  • y/old/new/:将当前模式空间中的字符“old”替换为“new”。

示例

  1. 打印文件中的所有行:
sed '' 文件名
  1. 打印文件中的第2行:
sed -n '2p' 文件名
  1. 删除文件中的第2行:
sed '2d' 文件名
  1. 将文件中的所有“old”替换为“new”:
sed 's/old/new/g' 文件名
  1. 在文件中的每行前面添加“prefix-”:
sed 's/^/prefix-/' 文件名
  1. 直接修改文件,将所有“old”替换为“new”:
sed -i 's/old/new/g' 文件名

这只是sed命令的一些基本用法,实际上sed的功能非常强大,可以通过组合多个命令和选项来完成更复杂的文本处理任务。

sed命令详解

sed(Stream Editor)是Linux/Unix系统中用于文本处理的流式编辑器,支持对文本进行查找、替换、删除、插入等操作[1][2][6]。以下是其核心功能和用法的详细解析:


一、基本语法
sed [选项] '命令' [输入文件]
  • 选项:控制sed的行为(如直接修改文件、多命令执行等)。
  • 命令:指定操作类型(如替换、删除、插入等)。
  • 输入文件:可选,若省略则从标准输入读取数据[4][6]。

二、常用选项
选项作用
-i直接修改原文件(而非输出到终端)[2][5]。
-e执行多个命令(可重复使用),例如 -e 's/old/new/' -e 'd'[2][6]。
-n禁止默认输出,仅显示经过处理的行(需配合p命令使用)[4][6]。

三、核心命令与操作
  1. 替换(Substitution)
    语法s/模式/替换内容/

    • 将匹配“模式”的文本替换为“替换内容”。
    • 示例:将文件file.txt中的foo替换为bar
      sed 's/foo/bar/g' file.txt  # `g`表示全局替换[^2^][^5^]
      
  2. 删除(Delete)
    语法d

    • 删除当前行。
    • 示例:删除第3行:
      sed '3d' file.txt  # 或指定行范围,如`3,5d`删除3-5行[^3^][^5^]
      
  3. 插入(Insert)
    语法i\后接内容

    • 在当前行上方插入内容。
    • 示例:在第2行前插入New Line
      sed '2i\New Line' file.txt  # 使用`a\`表示在行下方插入[^3^][^5^]
      
  4. 打印(Print)
    语法p

    • 输出缓冲区中的文本。常与-n选项配合使用。
    • 示例:仅打印包含error的行:
      sed -n '/error/p' file.txt  # `/pattern/p`表示匹配行才打印[^4^][^6^]
      
  5. 定界符与多命令

    • 若命令中包含/,可通过更改定界符避免冲突,例如s:/old/:/new/:g
    • 多命令用-e或分号分隔,例如:
      sed -e 's/foo/bar/' -e '3d' file.txt  # 先替换,再删除第3行[^2^][^6^]
      

四、高级功能
  1. 正则表达式支持

    • sed支持基础正则表达式,例如^(行首)、$(行尾)、.(任意字符)等。
    • 示例:删除空行:
      sed '/^$/d' file.txt  # 匹配空行并删除[^3^][^5^]
      
  2. 分组与引用

    • 使用\1, \2等引用括号分组内容。
    • 示例:将Chapter 1改为Section 1
      sed 's/\(Chapter \)[0-9]+\1/Section \1/' file.txt  # 替换分组内容[^5^]
      
  3. 脚本文件与复杂操作

    • 将多条命令写入脚本文件(如commands.sed),通过sed -f commands.sed file.txt执行。
    • 示例:批量替换多个单词:
      s/foo/bar/g
      s/test/demo/g
      

五、应用场景
  1. 批量文本处理

    • 快速修改配置文件、日志文件或代码中的特定内容[1][4]。
    • 示例:批量替换代码中的变量名:
      sed -i 's/oldVar/newVar/g' *.c  # 修改所有`.c`文件中的变量名[^2^][^5^]
      
  2. 数据清洗

    • 删除多余空行、提取特定字段或格式化文本[3][6]。
  3. 脚本自动化

    • 结合Shell脚本实现复杂文本处理流程,例如日志分析或数据预处理[5]。

六、注意事项
  1. 备份原文件
    • 使用-i选项时,建议先备份文件(如cp file.txt file.bak),避免误操作[4]。
  2. 区分sedawk
    • sed擅长简单文本替换和删除,而awk更适合基于条件的复杂文本处理[1][6]。
  3. 性能优化
    • 对大文件处理时,优先使用流式处理(如sed 's/pattern/replace/g' largefile),避免加载整个文件到内存[4]。

通过灵活组合选项和命令,sed可高效解决多种文本处理需求。更多细节可参考man sed或查看具体系统的帮助文档[3][6]。










7️⃣ 参考 7

在这里插入图片描述

sed命令详解与使用指南

sed(Stream Editor)是Linux/Unix系统中的流式文本编辑器,通过模式匹配+文本操作实现非交互式文本处理。其核心优势在于逐行处理能力和正则表达式支持。


一、基础语法结构
sed [选项] '操作指令' 输入文件

典型示例

sed 's/foo/bar/g' file.txt  # 全局替换foo为bar
sed -i.bak '3d' config.cfg  # 删除第3行并创建备份文件

二、核心功能模块
  1. 常用选项(OPTIONS)

    选项功能说明
    -n抑制默认输出,常与p命令配合使用
    -i[SUFFIX]直接修改源文件(谨慎使用),可选备份后缀
    -r启用扩展正则表达式
    -e执行多条命令,如 sed -e 's/a/b/' -e '3d'
  2. 核心命令(COMMANDS)

    命令格式示例功能
    替换`s/pattern/replacement/[gp
    删除d删除匹配行,如 sed '/error/d' log.txt
    打印p输出指定内容,需配合-n选项
    追加a\text在匹配行后追加文本
    插入i\text在匹配行前插入文本
  3. 地址匹配规则

    sed '3s/old/new/' file     # 仅在第3行替换
    sed '/start/,/end/d' file  # 删除start到end之间的所有行
    sed '5,$p' file            # 打印第5行到末尾
    

三、高级应用技巧
  1. 多命令组合
    sed -e 's/foo/bar/; 5d' file.txt  # 替换后删除第5行
    
  2. 正则表达式扩展
    sed -r 's/(\d+)-(\d+)/\2:\1/' phone.txt  # 用分组重组电话号码
    
  3. 脚本文件调用
    sed -f script.sed input.txt  # 调用预存命令脚本
    

四、安全操作建议
  1. 测试命令时先省略-i选项,确认无误后再执行真实修改
  2. 使用-i.bak创建备份文件,防止误操作
  3. 复杂正则表达式建议先用echo | sed验证

五、典型应用场景
  1. 日志清洗:sed '/ERROR/d; s/DEBUG/INFO/' app.log
  2. 配置文件修改:sed -i '/^#Port/s/#Port/Port/' sshd_config
  3. 数据格式转换:sed 's/\(.*\)/\U\1/' names.txt(转大写)










8️⃣ 参考 8

sed(Stream Editor)是Linux/Unix系统中强大的流式文本处理工具,支持非交互式的批量编辑操作。以下从核心功能、语法结构、实战案例等方面进行详解:


一、核心功能与原理

  1. 流式处理机制
    sed逐行读取输入(文件或标准输入流),将当前行存入模式空间(Pattern Space),按脚本命令处理后输出,再清空缓冲区进入下一循环。默认不修改原文件,仅输出到终端,需通过-i选项直接编辑文件。

  2. 主要功能
    • 替换文本:如批量修改字符串

    • 删除/插入行:根据行号或正则匹配操作

    • 过滤与提取:打印特定行或匹配内容

    • 复杂脚本处理:支持分支、循环等高级操作


二、基础语法与常用命令

sed [选项] '操作指令' 输入文件

常用选项

选项说明
-n禁止默认输出,常与p命令配合显示指定内容
-e执行多条命令(例:sed -e 's/a/b/' -e 'd'
-i直接修改原文件(危险操作,建议备份)
-r启用扩展正则表达式

核心操作指令

命令功能示例
s/replace/new/替换首个匹配内容sed 's/old/new/g'(全局替换)
d删除行sed '3d'(删第3行)
a\text行后追加文本sed '/pattern/a\new line'
i\text行前插入文本sed '2i\header'(第2行前插入)
p打印内容sed -n '1,5p'(仅显示1-5行)

三、地址定位与正则表达式

  1. 地址范围
    • 行号:3,5(第3到5行)

    • 正则匹配:/^start/,/end$/(匹配以start开头到end结尾的行)

    • 特殊符号:$表示末行,1~2表示从第1行开始每隔2行处理

  2. 正则元字符

    符号含义
    ^行首锚定(例:/^#/匹配注释行)
    $行尾锚定(例:/txt$/匹配以txt结尾的行)
    .*任意字符(贪婪匹配)
    \<单词开头(例:/\<word匹配以word开头的单词)

四、实战案例

  1. 批量替换域名

    sed -i 's/www.old.com/www.new.com/g' *.conf  # 替换所有.conf文件中的旧域名
    
  2. 删除注释行与空行

    sed -i '/^#/d; /^$/d' script.sh  # 删除以#开头的行和空行
    
  3. 插入版权信息

    sed '1i\/* Copyright 2025 */' code.c  # 在文件首行插入版权声明
    
  4. 提取特定范围内容

    sed -n '/START/,/END/p' data.log  # 打印START到END之间的内容
    

五、高级技巧

  1. 多点编辑
    使用-e执行多个命令,或分号分隔:

    sed -e '1,5d' -e 's/error/warning/' log.txt  # 先删除1-5行,再替换error
    
  2. 引用匹配内容
    在替换中使用&引用匹配项,或\1引用分组:

    sed 's/[0-9]/&th/g'  # 将数字后加th(如2→2th)
    sed 's/\(love\)able/\1rs/'  # loveable→lovers
    
  3. 模式空间与保持空间
    通过h(复制到缓冲区)、G(追加到模式空间)实现跨行操作。


总结
sed通过简洁的脚本语法实现高效文本处理,尤其适合自动化场景。掌握基础命令后,可结合正则表达式和地址定位处理复杂需求。更高级的标签跳转、条件分支等功能可参考官方文档或进阶教程。










9️⃣ 参考 9

sed(Stream Editor)是一个强大的文本处理工具,广泛用于在类Unix操作系统中进行文本替换、删除、插入和搜索等操作。以下是sed命令的详细解释:

基本语法

sed [选项] '命令' 文件

常用选项

  • -n:抑制自动打印模式空间内容,通常与p命令一起使用以仅输出特定行。
  • -e:指定要执行的命令,可以多次使用。
  • -f:从文件中读取sed命令。
  • -i:直接修改文件内容(就地编辑)。

基本命令

  1. 替换(Substitution)

    sed 's/模式/替换内容/' 文件
    
    • s:表示替换操作。
    • /模式/:要匹配的模式。
    • /替换内容/:用于替换的内容。
    • 默认情况下,sed只替换每行中第一次匹配的内容。

    示例:将每行中的foo替换为bar

    sed 's/foo/bar/' 文件
    
  2. 删除(Delete)

    sed 'Nd' 文件
    
    • N:要删除的行号。
    • d:删除命令。

    示例:删除第3行。

    sed '3d' 文件
    
  3. 插入和追加(Insert & Append)

    • 插入(Insert):在指定行之前插入内容。

      sed 'Ni\新内容' 文件
      
      • i\:插入命令。
    • 追加(Append):在指定行之后追加内容。

      sed 'Na\新内容' 文件
      
      • a\:追加命令。

    示例:在第2行之前插入新行

    sed '2i\新行' 文件
    
  4. 打印特定行(Print)

    sed -n 'Np' 文件
    
    • -n:抑制自动打印。
    • p:打印命令。

    示例:仅打印第5行。

    sed -n '5p' 文件
    
  5. 范围操作(Range)

    sed '起始行,结束行命令' 文件
    

    示例:替换第2到第4行中的foobar

    sed '2,4s/foo/bar/' 文件
    
  6. 多命令执行

    使用-e选项可以在一行中执行多个sed命令。

    示例:先删除第1行,然后在第3行插入新行

    sed -e '1d' -e '3i\新行' 文件
    

高级用法

  1. 使用正则表达式

    sed支持使用正则表达式进行复杂的模式匹配和替换。

    示例:删除所有以#开头的行。

    sed '/^#/d' 文件
    
  2. 保持和交换(Hold and Exchange)

    sed提供了保持空间(hold space)和模式空间(pattern space)的交换操作,用于更复杂的文本处理。

    示例:交换每两行。

    sed 'N;s/\(.*\)\n\(.*\)/\2\n\1/' 文件
    
  3. 使用变量

    可以结合Shell变量进行动态替换。

    示例:将foo替换为变量VAR的值。

    VAR="bar"
    sed "s/foo/$VAR/" 文件
    

常用示例

  1. 替换文件中所有oldnew并保存结果到新文件

    sed 's/old/new/g' 文件 > 新文件
    
  2. 删除空行

    sed '/^$/d' 文件
    
  3. 在文件末尾追加内容

    sed '$a\追加的内容' 文件
    
  4. 在匹配行之前插入内容

    sed '/匹配模式/i\插入的内容' 文件
    
  5. 将替换结果直接应用于文件(谨慎使用)

    sed -i 's/old/new/g' 文件
    

注意事项

  • 备份文件:在使用-i选项进行就地编辑时,建议使用备份选项以防止数据丢失。

    sed -i.bak 's/old/new/g' 文件
    

    这将在修改文件之前创建一个名为文件.bak的备份。

  • 转义字符:在使用特殊字符(如/&等)时,需要进行适当的转义。

    sed 's/\/old\//\/new\//g' 文件
    
  • 性能考虑:对于非常大的文件,sed可能会消耗较多内存和处理时间,需根据实际情况选择合适的工具。

总结

sed是一个功能强大的文本处理工具,适用于各种文本替换、删除、插入和搜索任务。掌握其基本命令和高级用法,可以极大地提高文本处理的效率和效果。建议通过实际练习和资料来深入理解sed的使用方法。










🔟 参考 10

以下是关于 sed 命令的详细解析,结合其核心功能、语法及实战应用场景整理而成:


一、sed 基础概念

sed(Stream Editor)是 Linux/Unix 系统中强大的流编辑器,用于对文本流进行非交互式编辑。其核心流程为:

  1. 读取一行到模式空间(Pattern Space);
  2. 执行命令(如替换、删除、插入等);
  3. 输出结果(默认打印修改后的行);
  4. 循环处理下一行,直至文件末尾。

二、基本语法

sed [选项] '命令' 输入文件
  • 常用选项
    • -n:禁止默认输出,仅显示处理后的行。
    • -e:允许多条命令执行(命令顺序影响结果)。
    • -i:直接修改原文件(慎用,建议备份:-i.bak)。
    • -r:支持扩展正则表达式。

三、核心命令与操作

1. 地址范围
  • 单行1(第1行)、$(最后一行)。
  • 行区间1,5(第1-5行)、5,$(第5行到最后)。
  • 正则匹配/pattern/(匹配含 pattern 的行)、\cpatternc(转义字符匹配)。
2. 常用命令
命令功能示例
s替换文本s/old/new/g(全局替换)
d删除行/pattern/d(删除含 pattern 的行)
*i*插入文本/pattern/i\插入内容(匹配行前插入)
*a*追加文本/pattern/a\追加内容(匹配行后追加)
p打印行-n '/pattern/p'(仅打印匹配行)
*c*替换整行2,5c\新内容(替换第2-5行为新内容)
3. 高级命令
  • 保持与获取缓冲区
    • h:将当前行复制到保持缓冲区。
    • H:追加到保持缓冲区。
    • g:用保持缓冲区内容覆盖模式空间。
    • G:追加保持缓冲区内容到模式空间。
  • 分支命令
    • b label:跳转到标签处执行。
    • t label:条件满足时跳转。

四、替换操作详解

1. 基本替换
sed 's/apple/orange/g' file.txt  # 全局替换所有 "apple" 为 "orange"
  • 标志
    • g:全局替换(默认仅替换每行第一个匹配项)。
    • p:打印替换后的行(常与 -n 配合)。
    • w file:将结果写入文件。
2. 特殊替换
  • 引用匹配内容
    • s/\(pattern\)/\1/g:用捕获组内容替换(如 s/\(love\)/\1able/glovable)。
    • &:在替换文本中引用完整匹配项(如 s/foo/&bar/gfoobar)。
  • 字符转换
    • y/abc/XYZ/:逐字符替换(a→X, b→Y, c→Z)。

五、实战应用案例

1. 批量替换
sed -i 's/www.old.com/www.new.com/g' *.html  # 批量替换所有 HTML 文件中的域名
2. 删除注释行
sed '/^#/d' config.sh  # 删除以 # 开头的注释行
3. 添加版权信息
sed -i '1i\/*\n * Copyright 2024 *\n */' *.c  # 在所有 C 文件开头插入版权声明
4. 提取特定列
sed -n '2p' data.txt  # 打印第2行
sed -n '/start/,/end/p' file  # 打印 start 到 end 之间的行

六、选项与注意事项

  • 直接修改文件:使用 -i 选项时,建议备份原文件(如 sed -i.bak 's/old/new/g' file)。
  • 正则表达式:默认使用基础正则,需用 -r 启用扩展正则(如 +? 等元字符)。
  • 性能优化:处理大文件时,可结合 --unbuffered-u)选项减少内存占用。

七、总结

sed 通过流式处理和脚本化操作,成为文本处理的利器。掌握其核心命令(如 sdi)和地址范围控制,可高效完成日志过滤、配置修改等任务。对于复杂需求,可结合分支、保持缓冲区等高级功能编写脚本。



















本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu-24.04.2-live-server-arm64基于cloud-init实现分区自动扩容(LVM分区模式)

1. 环境 虚拟机镜像ISO&#xff1a;ubuntu-24.04.2-live-server-arm64.iso 2. 定制cloud-init镜像 2.1 安装OS 基于ubuntu-24.04.2-live-server-arm64.iso&#xff0c;通过virt-manager安装操作系统&#xff0c;语言建议选择英文&#xff0c;分区选择基于LVM的自动分区&…

vue3专题1------父组件中更改子组件的属性

理解 Vue 3 中父组件如何引用子组件的属性是一个很重要的概念。 这里涉及到 defineExpose 和 ref 这两个关键点。 方法&#xff1a;使用 defineExpose 在子组件中暴露属性&#xff0c;然后在父组件中使用 ref 获取子组件实例并访问暴露的属性。 下面我将详细解释这个过程&…

数据仓库分层架构解析:从理论到实战的完整指南​​

数据仓库分层是构建高效数据体系的核心方法论。本文系统阐述ODS、DWD、DWS、ADS四层架构的设计原理&#xff0c;结合电商用户行为分析场景&#xff0c;详解各层功能及协作流程&#xff0c;并给出分层设计的原则与避坑指南&#xff0c;帮助读者掌握分层架构的落地方法。 一、为什…

从零搭建一套前端开发环境

一、基础环境搭建 1.NVM(Node Version Manager)安装 简介 nvm&#xff08;Node Version Manager&#xff09; 是一个用于管理多个 Node.js 版本的工具&#xff0c;允许开发者在同一台机器上轻松安装、切换和使用不同版本的 Node.js。它特别适合需要同时维护多个项目&#xff…

计算机组成原理笔记(十六)——4.1基本算术运算的实现

计算机中最基本的算术运算是加法运算&#xff0c;加、减、乘、除运算最终都可以归结为加法运算。 4.1.1加法器 一、加法器的基本单元 加法器的核心单元是 全加器&#xff08;Full Adder, FA&#xff09;&#xff0c;而所有加法器都由 半加器&#xff08;Half Adder, HA&…

利用Qt创建一个模拟问答系统

界面&#xff1a; 添加了聊天显示区域&#xff08;QTextEdit&#xff09; 添加了发送按钮和清空对话按钮 优化了布局和窗口大小添加了时间戳显示 2、功能&#xff1a; 支持实时对话可以清空对话历史 支持按回车发送消息 添加了简单的关键词匹配响应系统 交互体验&#x…

神经光子渲染:物理级真实感图像生成——从麦克斯韦方程到深度学习

一、技术背景与核心突破 2025年&#xff0c;神经光子渲染&#xff08;Photonic Neural Rendering, PNR&#xff09;技术通过物理光学方程与神经辐射场的深度融合&#xff0c;在AIGC检测工具&#xff08;如GPTDetector 5.0&#xff09;的识别准确率从98%降至12%。该技术突破性地…

Linux中手动安装7-Zip软件文档

7zip位于EPEL源中&#xff0c;如果服务器可以联网或者配置了本地EPEL源则可以直接安装 yum install p7zip p7zip-plugins -y对于无法联网且没有配置本地EPEL源的服务器&#xff0c;可以通过官网下载安装包后&#xff0c;上传至服务器&#xff0c;手动安装 ## 下载地址&#x…

[密码学基础]GM/T 0018-2023 密码设备应用接口规范深度解析:技术革新与开发者实践

GM/T 0018-2023 密码设备应用接口规范深度解析&#xff1a;技术革新与开发者实践 GM/T 0018-2023《密码设备应用接口规范》是中国密码行业的重要标准&#xff0c;于2023年12月4日发布&#xff0c;2024年6月1日正式实施&#xff0c;替代了2012年版标准。该标准旨在规范密码设备…

8.QT-按钮类控件|Push Button|Radio Button|Check Box|Tool Button(C++)

Push Button 使⽤ QPushButton 表⽰⼀个按钮.这也是当前我们最熟悉的⼀个控件了. QPushButton 继承⾃ QAbstractButton .这个类是⼀个抽象类.是其他按钮的⽗类 在Qt Designer中也能够看到这⾥的继承关系 属性说明text按钮中的⽂本icon按钮中的图标iconSize按钮中图标的尺⼨sh…

CFIS-YOLO:面向边缘设备的木材缺陷检测轻量级网络解析

论文地址:https://arxiv.org/pdf/2504.11305 目录 一、论文核心贡献 二、创新点详解 2.1 CARAFE动态上采样 工作原理 优势对比 2.2 C2f_FNB轻量模块 计算效率 2.3 Inner-SIoU损失函数 三、实验验证 3.1 消融实验 3.2 对比实验 四、应用部署 4.1 边缘设备部署流程…

BUUCTF PWN刷题笔记(1-9)

才知道&#xff0c;由于栈对齐&#xff0c;直接动调看栈估计会错&#xff0c;用cyclic看 1.test_your_nc NC连接一下&#xff0c;这个网站似乎直接访问是不中的&#xff0c;怀疑是没开启web的端口。NC链接输入cat flag就OK了&#xff0c;应该只是让我这样的小菜鸟培养自信用的…

C#处理网络传输中不完整的数据流

1、背景 在读取byte数组的场景&#xff08;例如&#xff1a;读取文件、网络传输数据&#xff09;中&#xff0c;特别是网络传输的场景中&#xff0c;非常有可能接收了不完整的byte数组&#xff0c;在将byte数组转换时&#xff0c;因字符的缺失/增多&#xff0c;转为乱码。如下…

PostgreSQL 用户资源管理

PostgreSQL 用户资源管理 PostgreSQL 提供了多种机制来管理和限制用户对数据库资源的使用&#xff0c;以下是全面的资源管理方法&#xff1a; 1 连接限制 1.1 限制最大连接数 -- 在 postgresql.conf 中设置 max_connections 100 -- 全局最大连接数-- 为特定用户设置连接限…

新书速览|OpenCV计算机视觉开发实践:基于Qt C++

《OpenCV计算机视觉开发实践:基于Qt C》 本书内容 OpenCV是计算机视觉领域的开发者必须掌握的技术。《OpenCV计算机视觉开发实践:基于Qt C》基于 OpenCV 4.10与Qt C进行编写&#xff0c;全面系统地介绍OpenCV的使用及实战案例&#xff0c;并配套提供全书示例源码、PPT课件与作…

【上位机——MFC】消息映射机制

消息映射机制 Window消息分类消息映射机制的使用代码示例 MFC框架利用消息映射机制把消息、命令与它们的处理函数映射起来。具体实现方法是在每个能接收和处理消息的类中&#xff0c;定义一个消息和消息函数指针对照表&#xff0c;即消息映射表。 在不重写WindowProc虚函数的大…

docker学习笔记2-最佳实践

一、在容器中启动mysql的最佳实践 &#xff08;一&#xff09;查找目录 1、mysql的配置文件路径 /etc/mysql/conf.d 2、mysql的数据目录 /var/lib/mysql 3、环境变量 4、端口 mysql的默认端口3306。 &#xff08;二&#xff09;启动命令 docker run -d -p 3306:3306 …

Vue3核心源码解析

/packages/complier-core 定位​​&#xff1a;​​编译时核心​​&#xff0c;处理 Vue 模板的编译逻辑。​​核心功能​​&#xff1a; ​​模板解析​​&#xff1a;将 .vue 文件的模板语法&#xff08;HTML-like&#xff09;解析为 ​​抽象语法树 (AST)​​。​​转换优化…

n8n 中文系列教程_05.如何在本机部署/安装 n8n(详细图文教程)

n8n 是一款强大的开源工作流自动化工具&#xff0c;可帮助你连接各类应用与服务&#xff0c;实现自动化任务。如果你想快速体验 n8n 的功能&#xff0c;本机部署是最简单的方式。本教程将手把手指导你在 Windows 或 MacOS 上通过 Docker 轻松安装和运行 n8n&#xff0c;无需服务…

【python】pyCharm常用快捷键使用-(2)

pyCharm常用快捷键使用 快速导入任意类 【CTRLALTSPACE】代码补全【CTRLSHIFTENTER】代码快速修正【ALTENTER】代码调试快捷键