博客
关于我
Linux进阶之Shell-sed
阅读量:794 次
发布时间:2023-02-05

本文共 1602 字,大约阅读时间需要 5 分钟。

SED命令入门与实践指南

基本用法

SED是一种强大的文本处理工具,广泛应用于文本编辑、替换、删除等操作。其基本用法通常为: `sed [选项] "指令" 文件` 例如: `sed -i "1ahello" 1.txt` - 在文件1.txt的第一行后面追加“hello”

常用选项

1. **-e**:将多个SED指令放在同一条命令中使用。 2. **-f**:将SED指令存储在文件中,后续可执行文件中的指令。 3. **-i**:直接修改文件内容(默认仅显示差异)。 4. **-n**:取消默认输出,仅显示处理结果。

编辑命令

1. **a**:追加内容,插入匹配行后。 2. **c**:替换匹配行内容。 3. **i**:插入内容,匹配行前。 4. **d**:删除匹配内容。 5. **s**:替换匹配内容。 6. **p**:打印匹配内容(需配合-n使用)。 7. **=**:打印匹配行的行号。 8. **n**:跳转到下一行。 9. **r/w**:读取/写入文件。 10. **//**:指定匹配字符串。

常用行号指定

- **1,2**:指定第一、二行。 - **1~2**:指定第一至第二行。 - **$**:指定最后一行。 - **^$**:指定空行。 - **.***:匹配所有内容。 - **#/,.*//g’**:匹配#开头的行及后续所有内容。

实例

1. **追加内容**: `sed -i "2ahello" 1.txt` - 在第二行前插入“hello”。
  1. 替换内容
    sed -i "/ab/ichello" 1.txt
    • 在包含“ab”的行前插入“hello”。
    1. 删除内容
      sed '1d' 1.txt
      • 删除第一行。
        sed '1,2d' 1.txt
      • 删除第一至第二行。
      1. 替换字符串
        sed 's/12/hello' 1.txt
        • 替换所有“12”为“hello”。
          sed 's/12/hello/g' 1.txt
        • 替换所有“12”。
        1. 读取与写入文件
          sed -n '1p' 1.txt
          • 打印第一行。
            sed -n '2w 2.txt' 1.txt
          • 将第二行写入2.txt。
          1. 处理注释与空行
            sed 's/^#.*//;' 1.txt
            • 删除注释行。
              sed 's/^#.*//; /^$/d' 1.txt
            • 先删除注释行,再删除空行。
            1. 行号操作
              sed -n '1~2p' 1.txt
              • 从第二行开始,每隔两行打印一行。

              高级操作

              1. **匹配多行**: `sed -n '/ab/,5p' 1.txt` - 打印从“ab”行到第五行。
              1. 行号范围操作
                sed -n '1,/ab/p' 1.txt
                • 打印第一行到“ab”行。
                1. 行号打印
                  sed -n "$=" 1.txt
                  • 打印文件最后一行的行号。
                  1. 文件操作
                    sed '1r 2.txt' 1.txt
                    • 将2.txt内容插入1.txt第一行后。
                    1. 文件写入
                      sed -n '2w 2.txt' 1.txt
                      • 将1.txt第二行写入2.txt。
                      1. 文件注释处理
                        sed 's/^[0-9]/(&)/' 1.txt
                        • 将每行首数字替换为“&”。

                        实际应用场景

                        - **批量替换注释**: `sed 's/^#.*//;/^$/d' 1.txt` - 删除注释行并保留非空行。
                        • 清理文件

                          sed '$d' 1.txt

                        • 删除最后一行。

                        • 筛选与处理

                          sed '/ab\|12/!d' 1.txt

                        • 删除不含“ab”或“12”的行。

                        • 行号范围删除

                          sed '1,3{/ab/d}' 1.txt

                        • 删除第一至第三行中包含“ab”的行。

                        • 文件合并

                          sed -n 'w 2.txt' 1.txt

                        • 将1.txt内容写入2.txt。

                        以上示例可根据实际需求调整,SED命令的灵活性和强大功能使其成为文本处理的理想工具。

转载地址:http://bekfk.baihongyu.com/

你可能感兴趣的文章
Linux运维趋势
查看>>
Linux进程命令四小龙:ps、netstat、top、kill,看一遍就会!
查看>>
Linux进程地址空间和虚拟内存
查看>>
Linux进程地址管理之mm_struct
查看>>
Linux进程堆栈状态分析实战
查看>>
Linux进程状态解析之R、S、D、T、Z、X
查看>>
linux进程的休眠(等待队列)【转】
查看>>
Linux进程的实际用户ID和有效用户ID
查看>>
Linux进程管理与监控
查看>>
Linux进程管理实战指南:实用工具命令详解
查看>>
linux进程管理工具supervisor
查看>>
Linux进程间通信 - 共享内存
查看>>
Linux进程间通信——使用命名管道
查看>>
Linux进程间通信的秘密通道:IPC机制详解
查看>>
Linux进阶之Shell-sed
查看>>
Linux远程管理软件winscp427
查看>>
Linux远程连接wget、curl、scp命令详解
查看>>
linux连接代理服务器
查看>>
linux递归参数-R(r)和-p的区别
查看>>
linux递归读取环境变量,linux环境变量与文件查找
查看>>