当前位置: 首页 > news >正文

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)和地址范围控制,可高效完成日志过滤、配置修改等任务。对于复杂需求,可结合分支、保持缓冲区等高级功能编写脚本。



















相关文章:

sed命令笔记250419

sed命令笔记250419 sed&#xff08;Stream Editor&#xff09;是 Linux/Unix 系统中强大的流编辑器&#xff0c;主要用于对文本进行过滤和转换&#xff08;按行处理&#xff09;。它支持正则表达式&#xff0c;适合处理文本替换、删除、插入等操作。以下是 sed 的详细解析&…...

LinearLayout 线性布局

目录 Android LinearLayout&#xff08;线性布局&#xff09;简单介绍与使用示例 一、效果介绍 二、布局文件&#xff08;XML&#xff09; 三、Java 代码 四、程序运行效果 五、总结 在 Android 移动应用开发中&#xff0c;LinearLayout&#xff08;线性布局&#xff09;…...

System.in 详解

System.in 详解 System.in 是 Java 提供的标准输入流&#xff08;InputStream 类型&#xff09;&#xff0c;默认关联键盘输入&#xff0c;通常用于从控制台读取用户输入。由于它是字节流&#xff08;InputStream&#xff09;&#xff0c;直接使用较麻烦&#xff0c;一般会配合…...

JAVA IO、BIO、NIO、AIO及零拷贝

概述 IO,常写作 I/O,是 Input/Output 的简称,是 Input/Output 的简称,即输入/输出。通常指数据在内部存储器(内存)和外部存储器(硬盘、优盘等)或其他周边设备之间的输入和输出。 目前有三种 IO 共存。分别是 BIO、NIO 和 AIO。 BIO 全称 Block-IO 是一种同步且阻塞的…...

AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年4月19日第57弹

从今天开始&#xff0c;咱们还是暂时基于旧的模型进行预测&#xff0c;好了&#xff0c;废话不多说&#xff0c;按照老办法&#xff0c;重点8-9码定位&#xff0c;配合三胆下1或下2&#xff0c;杀1-2个和尾&#xff0c;再杀6-8个和值&#xff0c;可以做到100-300注左右。 (1)定…...

REST 架构详解:从概念到应用的全面剖析

REST&#xff08;Representational State Transfer&#xff09;即表述性状态转移&#xff0c;是一种用于构建网络应用程序的架构风格和设计理念&#xff0c;由计算机科学家罗伊・菲尔丁&#xff08;Roy Fielding&#xff09;在 2000 年提出。以下是关于它的详细介绍&#xff1a…...

SICAR程序标准功能块 FB1512 “Robot_kuka_FB“

1、FB1512功能块截图 2、FB1512 功能块引脚功能定义 一、输入引脚 EN:使能输入,决定功能块是否执行。IDENTIFIER(WSTRING#"FW010_R01"):设备标识,指定关联的机器人设备。OPMODE_USER_INTERFACE_OUT:操作模式输入,定义机器人工作模式(如手动、自动),数据源…...

win安装软件

win安装软件 jdk安装 jdk安装 首先去官网下载适合系统版本的JDK&#xff0c;下载地址&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/index.html进入下载页面&#xff0c;如下图&#xff1a; 首先选择&#xff1a;Accept License Agreement单选按钮&…...

文本生成与采样策略 (Text Generation Sampling)

我们已经学习了如何构建和训练一个基于 Transformer Decoder-only 的语言模型。模型训练的目标是学习预测给定前缀下下一个 token 的概率分布。但是,训练完成后,我们如何利用这个模型来生成全新的、连贯的文本呢? 这就涉及到推理过程和采样策略。推理是模型投入实际使用、生…...

为什么 waitress 不支持 WebSocket?

waitress 是一个纯 Python 实现的 WSGI 服务器&#xff0c;主要用于生产环境部署 Python Web 应用。但它不支持 WebSocket 协议&#xff0c;因为它只实现了 WSGI 规范&#xff0c;而 WebSocket 协议需要 ASGI&#xff08;Asynchronous Server Gateway Interface&#xff09;支持…...

[C++] 高精度加法(作用 + 模板 + 例题)

高精度加法-目录 高精度加法用途高精度加法模板string转数位数组int 转数位数组(附加型知识点)高精度输出高精度加法函数大合集!!! 高精度加法用途 高精度加法通常用于加很大的数(真的很大, 超unsigned long long的那种). 高精度加法模板 注: 本篇数组下标0(x[0])存储的是该…...

python程序的流程

三大基本流程&#xff1a; 顺序结构、分支结构&#xff08;又称为选择结构&#xff09;、循环结构 分支结构又分为单分支、双分支、多分支 从键盘上输入一个数字&#xff0c;并输出奇数或偶数 #从键盘上输入一个数字&#xff0c;并输出奇数或偶数 nint(input("n ")…...

基于大模型的下肢静脉曲张全流程预测与诊疗方案研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 研究方法与数据来源 二、下肢静脉曲张概述 2.1 定义与病理生理 2.2 风险因素与临床表现 2.3 诊断方法与现有治疗手段 三、大模型预测原理与构建 3.1 大模型技术简介 3.2 预测模型的数据收集与预处理 3.…...

Android 应用wifi direct连接通信实现

一. 打开Wi-Fi direct 1.必须启用Wi-Fi功能&#xff1a;在设备设置中开启Wi-Fi主开关&#xff08;即使未连接路由器&#xff09; 关闭冲突功能&#xff1a;若已开启「热点共享」或连接到其他Wi-Fi网络&#xff0c;需先关闭相关功能以避免硬件占. <!-- Wi-Fi Direct 核心权限…...

AI写代码工具分享:Cursor 高效使用攻略与实战秘籍

写在前面 在软件开发领域,效率和生产力是永恒的追求。集成开发环境(IDE)作为开发者的核心工具,其能力直接影响着开发速度和质量。近年来,人工智能(AI)的浪潮席卷了各个行业,编程领域也不例外。Cursor IDE 正是这股浪潮中的佼佼者,它以 AI-First 的理念,在广受欢迎的…...

关于viewpager常见的泄漏

在一个页面中 如果有用到tab&#xff0c;有需要进行fragment的切换&#xff0c;经常就看到了private var fragments arrayListOf<Fragment>()private fun initFragment() {arguments?.let {hopeToPosition it.getInt(IntentConstant.MAIN_PAGE_GO, 0)workoutType it.…...

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

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

代谢组数据分析(二十四):基于tidymass包从质谱原始数据到代谢物注释结果的实践指南

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据准备原始数据处理导入massDataset数据对象交互图数据探索更新样本表格信息峰分布情况缺失值情况数据清洗数据质量评估去除噪声代谢特征过滤立群样本填补缺失值数据标准化…...

Java使用javacv实现的多种音视频格式播放器

一、前言 最近写了一款图形界面版的音视频播放器&#xff0c;可以支持多种音视频格式的播放&#xff0c;比如MP4、avi、mkv、flv、MP3、ogg、wav等多种格式&#xff0c;非常好用&#xff0c;可以本地打开多种格式音视频。 二、实现 1.通过引入javacv相关依赖实现&#xff0c;如…...

csdn教程

hello,大家好&#xff0c;我是黑名单小羊&#xff0c;今天给大家分享一下csdn怎么换背景喵~ 成品&#xff1a; 首先&#xff0c;点击管理博文喵~ 然后&#xff0c;把任务栏往下翻喵~ 你就会看见博客设置&#xff0c;点击喵~ 再点击等级&#xff0c;如果你开通了 vip&#xff0…...

React 第三十三节 ReactRouter 中 useSearchParams 使用详解及注意事项

一、useSearchParams 定义 基本用法 定义&#xff1a;用于返回当前 URL 的 URLSearchParams 的元组和用于更新它们的函数。设置 search params 会导致导航。 import { useSearchParams } from react-router-dom export default function orderCenter() {const [searchParams,…...

@EnableAsync+@Async源码学习笔记之四

接上一篇&#xff0c;我们进入 AsyncAnnotationAdvisor 的分析&#xff0c;源码如下&#xff1a; package org.springframework.scheduling.annotation;import java.lang.annotation.Annotation; import java.util.HashSet; import java.util.LinkedHashSet; import java.util…...

【java实现+4种变体完整例子】排序算法中【快速排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格

以下是快速排序的详细解析&#xff0c;包含基础实现、常见变体的完整代码示例&#xff0c;以及各变体的对比表格&#xff1a; 一、快速排序基础实现 原理 通过分治法选择一个基准元素&#xff08;pivot&#xff09;&#xff0c;将数组分为两部分&#xff1a; 左边元素均小于…...

MAUI项目iOS应用以进 App Store 分发

目录 一.通过Visual Studio分发应用1. 登录Apple 开发者帐户到 Visual Studio2.创建分发证书和配置文件3. 分发应用4. 在App Store Connect 中创建应用程序记录5. 如果你想使用mac发布应用 一.通过Visual Studio分发应用 1. 登录Apple 开发者帐户到 Visual Studio 首先我们要…...

Linux——firewalld防火墙(笔记)

目录 一&#xff1a;Firewalld防火墙的概述 &#xff08;1&#xff09;firewalld简介 &#xff08;2&#xff09;firewalld&iptables的关系 &#xff08;3&#xff09;firewalld与iptables service的区别 1. ‌规则管理方式‌ 2. ‌默认策略与设计逻辑‌ 3. ‌配置文…...

SICAR标准功能块 FB1514 “Robot_request_FB”

1、功能块截图 2、引脚功能描述 输入引脚: EN:使能输入,控制功能块运行。PLANT_IDENTIFIER:工厂或设备标识符(如 #FWO10_RO1_SEGM_201),用于标识操作对象。OPMODE_USER:操作模式输入(用户模式)。INTERFACE_OUT:连接系统数据库的操作模式接口(SYSTEM_DB.OPmode[2].U…...

vue3 watch和watchEffect 的用法和区别

在 Vue 3 里&#xff0c;watch 和 watchEffect 都是用于响应式数据变化的 API&#xff0c;但它们在使用方法和应用场景上存在差异。下面详细介绍它们的用法和区别。 用法 watch watch 用于监听特定的响应式数据源&#xff0c;当数据源发生变化时&#xff0c;会执行相应的回调…...

Linux | I.MX6ULL 使用 Yocto 文件系统开发 QT

01 Yocto 文件系统默认支持了 QT,那么我们要怎么在 Yocto 文件系统来运行我们的 QT 程序呢?本章节我们就来学习上在 yocto 文件系统+Ubuntu 环境来开发 QT 程序。 注意,开发环境是基于“qtcreator-3.5.1”(Ubuntu16.04.6),库文件是Qt5.5.1 02 QT 安装 (1)首先我们…...

论文阅读:2024 ICLR Workshop. A STRONGREJECT for Empty Jailbreaks

总目录 大模型安全相关研究&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/142132328 A STRONGREJECT for Empty Jailbreaks https://arxiv.org/pdf/2402.10260 https://github.com/dsbowen/strong_reject https://strong-reject.readthedocs.io/en/latest/ …...

数据结构实验7.2:二叉树的基本运算

文章目录 一&#xff0c;实验目的二&#xff0c;问题描述三&#xff0c;基本要求四&#xff0c;实验操作五&#xff0c;示例代码六&#xff0c;运行效果 一&#xff0c;实验目的 深入理解树与二叉树的基本概念&#xff0c;包括节点、度、层次、深度等&#xff0c;清晰区分二叉…...

关于一对多关系(即E-R图中1:n)中的界面展示优化和数据库设计

前言 一对多&#xff0c;是常见的数据库关系。在界面设计时&#xff0c;有时为了方便&#xff0c;就展示成逗号分割的字符串。例如&#xff1a;学生和爱好的界面。 存储 如果是简单存储&#xff0c;建立数据库&#xff1a;爱好&#xff0c;课程&#xff0c;存在一张表中。 但…...

Jenkins设置中文显示

1 安装插件 依次进入菜单&#xff1a; Jenkins -> Manage Jenkins -> Plugin Manager -> Avaliable 1.1 安装插件Locale plugin 1.2 安装插件Localization: Chinese&#xff08;Simplified&#xff09; 2 修改配置 点击菜单Manage Jenkins进入系统管理 点击菜单C…...

【MATLAB海洋专题】历史汇总

【MATLAB海洋专题】历史汇总 目录 01&#xff1a;海洋专题进阶教学 02&#xff1a;海洋数据处理 03&#xff1a;海洋数据下载 04&#xff1a;海洋配色 05&#xff1a;海洋专题基础教学 06: 其他基础画图 07&#xff1a;python 画海图专题 08&#xff1a;模式相关文件制作 01…...

【java实现+4种变体完整例子】排序算法中【归并排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格

以下是归并排序的详细解析&#xff0c;包含基础实现、常见变体的完整代码示例&#xff0c;以及各变体的对比表格&#xff1a; 一、归并排序基础实现 原理 通过分治法将数组分为两半&#xff0c;递归排序子数组&#xff0c;最后合并有序子数组。 代码示例 public class Mer…...

深入理解前端安全:CSRF与XSS攻击详解

引言 在Web开发的世界里&#xff0c;安全性就像是房子的门锁。你可能觉得它不显眼&#xff0c;但一旦没了它&#xff0c;麻烦可就大了&#xff01;本文将深入探讨两大前端安全威胁&#xff1a;CSRF&#xff08;跨站请求伪造&#xff09;和XSS&#xff08;跨站脚本攻击&#xf…...

spring-batch批处理框架(2)

文章目录 八、作业控制8.1 作业启动8.1.1 SpringBoot 启动8.1.2 Spring 单元测试启动8.1.3 RESTful API 启动 8.2 作业停止方案1&#xff1a;Step 步骤监听器方式方案2&#xff1a;StepExecution停止标记 8.3 作业重启8.3.1 禁止重启8.3.2 限制重启次数8.3.3 无限重启 九、Item…...

[Java · 初窥门径] Java 注释符

&#x1f31f; 想系统化学习 Java 编程&#xff1f;看看这个&#xff1a;[编程基础] Java 学习手册 0x01&#xff1a;Java 注释符简介 在编写程序时&#xff0c;为了使代码易于理解&#xff0c;通常会为代码加一些注释。Java 注释就是用通俗易懂的语言对代码进行描述或解释&a…...

linux下C++性能调优常用的工具

性能优化的常见流程 发现问题--->定位问题--->解决问题--->验证问题 发现问题的常见工具 1.定位内存问题 top指令&#xff0c;发现占用内存多的线程 asan 发现内存问题。 2.定位cpu问题 top指令&#xff0c;发现占用cpu多的进程&#xff0c;线程 一般对内存和…...

MinnowBoard MAX单板UEFI BIOS代码编译教程

此教程用于UEFI EDK2代码的研究&#xff0c;虽然EDK2框架代码开源&#xff0c;但是都是在模拟器上跑仿真&#xff0c;差点意思&#xff0c;搞过嵌入式大的应该有一个共识&#xff0c;是骡子是马&#xff0c;你得把板子点亮啊。MinnowBoard MAX单板是intel10多年前发布的软硬件全…...

真实波幅策略思路

该策略是一种基于ATR&#xff08;Average True Range&#xff09;指标的交易策略&#xff0c;主要用于期货市场中的日内交易。策略的核心思想是利用ATR指标来识别市场的波动范围&#xff0c;并结合均线过滤来确定买入和卖出的时机。 交易逻辑思维 1. 数据准备与初始化 - 集合竞…...

【每天一个知识点】模式识别

“模式识别”是一种从数据中识别出规律、结构或趋势的技术&#xff0c;它广泛应用于人工智能、机器学习、图像处理、语音识别、自然语言处理等领域。简单来说&#xff0c;就是让计算机学会“看出”数据中的规律&#xff0c;比如&#xff1a; 从图像中识别人脸&#xff08;人脸识…...

Node.js 创建 HTTP 服务端

Node.js 创建 HTTP 服务端的用法总结&#xff0c;内容涵盖了 核心模块、基本用法、Express 简化用法、常见场景、错误处理、以及实用小贴士。 ✅ 一、Node.js 创建 HTTP 服务的方式 Node.js 使用内置的 http 模块即可快速创建一个 Web 服务&#xff0c;无需额外安装依赖。 ✅ …...

深入浅出伯努利分布:从 0‑1 随机世界到统计学习基石

深入浅出伯努利分布&#xff1a;从 0‑1 随机世界到统计学习基石 “当你能把一个问题拆解成一系列“是/否”答案时&#xff0c;伯努利分布就是第一块砖。” 目录 引言&#xff1a;伯努利分布为何如此重要&#xff1f;历史回顾&#xff1a;从赌博到信息论形式化定义与基本表示三…...

x-ui重新申请ssl证书失败

由于某些需要我们重新申请ssl证书&#xff0c;x-ui自动化脚本不能强制更新&#xff0c;根据x-ui仓库源码&#xff1a; https://github.com/vaxilu/x-ui/blob/main/x-ui.sh 在申请ssl证书的地方稍作修改&#xff0c;得到&#xff0c;运行下面的脚本就可以重新申请ssl证书&#…...

Python Requests 库:从安装到精通

摘要 本文详细介绍 Python Requests 库的安装与使用&#xff0c;通过常见示例让你轻松掌握。 一、引言 在当今的互联网时代&#xff0c;与各种 Web 服务进行交互是非常常见的需求。Python 作为一门功能强大且易于学习的编程语言&#xff0c;提供了许多用于网络请求的库&…...

No package docker-ce available问题的解决

安装docker时提示 rootk8s-node3 ~]# yum install -y docker-ce docker-ce-cli containerd.io Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com No packag…...

SRS流媒体服务器

SRS流媒体服务器简介 SRS(Simple RTMP Server)是一个开源的流媒体服务器&#xff0c;主要用于直播和WebRTC场景。以下是关于SRS的关键信息&#xff1a; 主要特性 支持多种协议&#xff1a;RTMP、HTTP-FLV、HLS、WebRTC、SRT等低延迟&#xff1a;特别优化了WebRTC和HTTP-FLV的…...

【后端开发】Spring日志

文章目录 Spring日志日志作用日志测试日志信息日志级别日志配置配置日志级别日志持久化日志文件分割 注解的使用 Spring日志 日志作用 系统监控&#xff1a;可以通过日志记录这个系统的运行状态&#xff0c;对数据进行分析&#xff0c;设置不同的规则&#xff0c;超过阈值时进…...

Nginx 文件上传大小限制及 `client_max_body_size` 最大值详解

一、默认值与错误提示 默认值&#xff1a;client_max_body_size 1m; Nginx 默认允许的请求体最大为 1 MiB&#xff0c;超过该值会返回 413 Request Entity Too Large 错误。错误提示示例&#xff1a;HTTP/1.1 413 Request Entity Too Large Content-Type: text/html二、如何配…...

js day3

for循环打印* let num1prompt("要打印的层数&#xff1a;") for()let i0;i<num1;i&#xff09;{ for(let j1;j<i;j){ doucument.writeln(*) } document.writeln(<br>) } do……while循环 do{ document.writeln(i) i }while(i>20)——先执行再判…...