使用 Sed p 命令打印行:综合指南

2023-10-13

The p命令输入sed用于打印当前模式空间,即当前文本行。

您可以使用sed命令p从文件中打印文本行的选项如下:


sed -n 'p' filename
  

在本教程中,您将了解使用sed p用于打印文件或数据流中的行的命令。

 

 

打印特定行

您可以使用sed打印文件中的特定行。例如,如果要打印文件中的第 5 行,可以使用以下命令:


sed -n '5p' filename
  

在此命令中,-n抑制图案空间的自动打印和5p指示sed打印文件的第 5 行。

 

打印多行

要打印文件中的一系列行,请使用以下语法:


sed -n 'X,Yp' filename
  

Where X是起始线并且Y是终点线。

例如,要从文件中打印第 10 行到第 20 行,请使用以下命令:


sed -n '10,20p' filename
  

此命令将从文件中打印第 10 至 20 行。

 

抑制图案空间的自动打印

默认情况下,sed将输入文件的每一行打印到终端。

The -n选项抑制模式空间的自动打印,这意味着sed除非明确告知,否则不会打印任何内容。

例如,考虑一个名为example.txt包含以下内容:


1. This is line 1
2. This is line 2
3. This is line 3
4. This is line 4
5. This is line 5
  

如果您运行以下命令:


sed 'p' example.txt
  

输出将是:


1. This is line 1
1. This is line 1
2. This is line 2
2. This is line 2
3. This is line 3
3. This is line 3
4. This is line 4
4. This is line 4
5. This is line 5
5. This is line 5
  

每行打印两次,因为sed自动打印图案空间和p命令还打印模式空间。

要禁止自动打印图案空间,请使用-n option:


sed -n 'p' example.txt
  

现在,输出将是:


1. This is line 1
2. This is line 2
3. This is line 3
4. This is line 4
5. This is line 5
  

 

打印与图案匹配的线条

如果要打印包含特定单词的文件中的所有行,可以使用以下命令:


sed -n '/error/p' filename
  

在此命令中,/error/p指示sed仅打印包含单词“error”的行。

考虑一个名为logs.txt包含以下内容:


INFO: Starting the application
ERROR: Failed to start the application
INFO: Retrying to start the application
ERROR: Failed to start the application again
INFO: Application started successfully
  

如果您运行以下命令:


sed -n '/ERROR/p' logs.txt
  

输出将是:


ERROR: Failed to start the application
ERROR: Failed to start the application again
  

仅打印包含单词“ERROR”的行。

 

打印与图案不匹配的线条

您可以使用!之前的符号p命令输入sed打印与特定模式不匹配的行


sed -n '/error/!p' filename
  

在此命令中,/error/!p指示sed仅打印不包含单词“error”的行。

使用相同的logs.txt如果运行以下命令,则从上一个示例中获取文件:


sed -n '/ERROR/!p' logs.txt
  

输出将是:


INFO: Starting the application
INFO: Retrying to start the application
INFO: Application started successfully
  

仅打印不包含单词“ERROR”的行。

 

在匹配图案之前/之后打印线条

With sed,您还可以在与特定模式匹配的行之前或之后打印行。

在比赛前打印行数

要在与特定模式匹配的行之前打印行,可以使用以下语法:


sed -n '/pattern/{x;p;d;}; x' filename
  

例如,要在与单词“ERROR”匹配的行之前打印 1 行,可以使用以下命令:


sed -n '/successfully/{x;p;d;}; x' logs.txt
  

使用logs.txt从前面的示例中获取文件,此命令将输出:


ERROR: Failed to start the application again
  

比赛结束后打印行数

要在匹配特定模式的行之后打印行,可以使用以下语法:


sed -n '/pattern/{n;p;q;}' filename
  

例如,要在与单词“ERROR”匹配的行后打印 1 行,可以使用以下命令:


sed -n '/ERROR/{n;p;q;}' logs.txt
  

使用logs.txt从前面的示例中获取文件,此命令将输出:


INFO: Retrying to start the application
INFO: Application started successfully
  

 

打印直至形成图案

您可以使用sed打印从文件开头到匹配特定模式的行的所有行。

其语法如下:


sed -n '/pattern/q;p' filename  

例如,要打印文件中直到包含单词“stop”的行的所有行,可以使用以下命令:


sed -n '/stop/q;p' filename  

/stop/q– 这部分命令告诉sed退出 (q)当它遇到包含模式“stop”的行时。

考虑一个名为content.txt包含以下内容:


This is the first line.
This is the second line.
stop
This is the fourth line.
This is the fifth line.
  

如果您运行以下命令:


sed -n '/stop/q;p' content.txt  

输出将是:


This is the first line.
This is the second line.
  

打印从文件开头到包含单词“stop”的行的所有行。

 

在两个图案之间打印线条

您可以使用sed打印两个指定模式之间的行。这对于从文件中提取特定的文本块非常有用。

其语法如下:


sed -n '/pattern1/,/pattern2/p' filename  

Where pattern1是起始模式并且pattern2是结束模式。

例如,要打印文件中包含“Start”和“End”的行之间的所有行,可以使用以下命令:


sed -n '/Start/,/End/p' filename  

考虑一个名为section.txt包含以下内容:


This is some text.
Start
This is the section you want to extract.
It contains multiple lines.
End
This is some more text.
  

如果您运行以下命令:


sed -n '/Start/,/End/p' section.txt  

输出将是:


Start
This is the section you want to extract.
It contains multiple lines.
End
  

包含“Start”和“End”的行之间的所有行都将被打印,包括它们。

要排除“Start”和“End”,可以使用删除命令(d) 像这样:


sed -n '/Start/,/End/ { /Start/d; /End/d; p }' section.txt  

输出将是:


This is the section you want to extract.
It contains multiple lines.
  

 

 

打印特定行

打印特定行号的语法如下:


sed -n 'Xp;Yp' filename
  

Where X and Y是您要打印的行号。

例如,要打印文件中的第 3 行和第 5 行,可以使用以下命令:


sed -n '3p;5p' filename
  

考虑一个名为data.txt包含以下内容:


1. Apple
2. Banana
3. Cherry
4. Date
5. Elderberry
  

如果您运行以下命令:


sed -n '3p;5p' data.txt
  

输出将是:


3. Cherry
5. Elderberry
  

仅打印第 3 行和第 5 行。

 

打印从特定行开始到结束的行

您可以使用sed打印从特定行号开始到文件末尾的所有行,如下所示:


sed -n 'X,$p' filename
  

Where X是起始行号。

例如,要打印从第 3 行开始的所有行,可以使用以下命令:


sed -n '3,$p' filename
  

使用data.txt上一个示例中的文件:


sed -n '3,$p' data.txt
  

输出将是:


3. Cherry
4. Date
5. Elderberry
  

打印从第三行到文件末尾的所有行。

 

打印与正则表达式匹配的行

打印与 a 匹配的行的语法正则表达式如下:


sed -n '/regex/p' filename
  

例如,要打印文件中以字母“A”开头的所有行,可以使用以下命令:


sed -n '/^A/p' filename
  

在此命令中,^A是一个正则表达式,匹配以字母“A”开头的任何行。

考虑一个名为fruits.txt包含以下内容:


Apple
Banana
Apricot
Date
Avocado
  

如果您运行以下命令:


sed -n '/^A/p' fruits.txt
  

输出将是:


Apple
Apricot
Avocado
  

仅打印以字母“A”开头的行。

打印与正则表达式不匹配的行

您还可以使用sed打印与特定正则表达式不匹配的行,如下所示:


sed -n '/regex/!p' filename
  

例如,要打印文件中不以字母“A”开头的所有行,可以使用以下命令:


sed -n '/^A/!p' filename
  

在此命令中,^A是一个正则表达式,匹配以字母“A”开头的任何行。

使用fruits.txt如果运行以下命令,则从上一个示例中获取文件:


sed -n '/^A/!p' fruits.txt
  

输出将是:


Banana
Date
  

仅打印不以字母“A”开头的行。

 

打印包含特殊字符的行

当处理特殊字符时,例如*, ., /, \, &, |, [, ], {, }, (, ), ^, and $,你必须用反斜杠转义它们\为了从字面上匹配它们。

打印包含特殊字符的行的语法如下:


sed -n '/\character/p' filename
  

例如,要打印包含以下内容的文件中的所有行*字符,可以使用以下命令:


sed -n '/\*/p' filename
  

考虑一个名为special.txt包含以下内容:


This is a test.
This line contains * character.
This is another test.
  

如果您运行以下命令:


sed -n '/\*/p' special.txt
  

输出将是:


This line contains * character.
  

仅包含以下行*字符被打印。

 

打印前修改

sed允许您在使用以下组合打印行时修改行p命令与其他命令,例如s(代替)。

将 (p) 与替换 (s) 命令结合起来

The s命令输入sed是用来代换。当你结合时p with s, sed将替换指定的文本,然后打印该行。

其语法如下:


sed -n 's/pattern/replacement/p' filename
  

例如,要将单词“test”替换为“exam”,然后打印该行,可以使用以下命令:


sed -n 's/test/exam/p' filename
  

使用test.txt如果运行以下命令,则从上一个示例中获取文件:


sed -n 's/test/exam/p' test.txt
  

输出将是:


This is a exam.
This is another exam.
  

“test”一词被“exam”替换,并打印出这些行。

 

打印多个输入文件

当您提供多个输入文件时,sed将按照列出的顺序依次处理它们。

使用的语法sed p具有多个输入文件的命令如下:


sed -n 'p' file1 file2 ... fileN
  

例如,要打印两个文件的第三行,data1.txt and data2.txt,您可以使用以下命令:


sed -n '3p' data1.txt data2.txt
  

考虑两个文件,data1.txt and data2.txt,内容如下:

数据1.txt:


1. Apple
2. Banana
3. Cherry
  

数据2.txt:


4. Date
5. Elderberry
6. Fig
  

如果您运行以下命令:


sed -n '3p' data1.txt data2.txt
  

输出将是:


3. Cherry
6. Fig
  

打印每个文件的第三行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Sed p 命令打印行:综合指南 的相关文章

  • 调试严重的 SIGILL 崩溃:文本段损坏

    我们的系统是基于 PowerPC 的运行 Linux 的嵌入式系统 我们遇到了随机的 SIGILL 崩溃 这种情况在各种应用程序中都会出现 崩溃的根本原因是将要执行的指令归零 这表明内存中的文本段已损坏 由于文本段是以只读方式加载的 因此应
  • 如何在生产环境中运行 spring boot 可执行 jar?

    Spring Boot 的首选部署方法是通过内部包含 tomcat 的可执行 jar 文件 它是从一个简单的开始java jar myapp jar 现在 我想将该 jar 部署到 EC2 上的 Linux 服务器上 我是否遗漏了某些内容
  • mod_fcgid + PHP + apache 锁定

    我正在运行一个相当典型的 LAMP 堆栈 其中 PHP 通过 mod fcgid 运行 考虑到服务器收到的流量 我认为服务器处于 高负载 状态 存在一个间歇性问题 当访问依赖 PHP 的站点时 Apache 报告所有连接都处于 正在发送内容
  • 安装pipenv导致pip3无法使用

    我安装了pipenv using pip3 install pipenv 这给了我错误ImportError cannot import name main 为了解决这个错误我遵循这些说明 https stackoverflow com q
  • find 命令的“exec”功能可以在后台启动程序吗?

    我想做这样的事情 find iname Advanced Linux Program exec kpdf 可能的 还有其他类似的方法吗 首先 它不会像你输入的那样工作 因为 shell 会将其解释为 find iname Advanced
  • 使用 java.nio.Files 更改 Linux 下的文件所有者组

    我有一台 Linux 服务器 并且正在 Java 中为服务器上的多个网站运行图像调整大小作业 网站文件由不同的操作系统用户 组拥有 新创建的缩略图 预览由运行调整大小作业的用户拥有 现在我正在谷歌搜索如何在调整大小程序中更改新创建的预览 缩
  • tar 命令在提取时更改所有者:组

    使用此命令提取文件时tar zxf bluez arm package tgz文件和目录的所有者 1000 组 脉冲 是 更改如下例 Example drwxrwxr x 4 1000 pulse 1024 Jul 21 00 32 dbu
  • Ruby - 在 tmp/pids/thin.pid 中找不到 PID (Thin::PidFileNotFound)

    我试图开始精简我的应用程序 但随后pid无法生成 thin C var www project path current config myproject testing yml start 现在我无法阻止它 因为没有 pid thin C
  • 你能在 MS Windows 上用 Python 将 stdin 作为文件打开吗?

    在 Linux 上 我使用 subbprocess Popen 来运行应用程序 该应用程序的命令行需要输入文件的路径 我了解到我可以将路径 dev stdin 传递到命令行 然后使用 Python 的 subproc stdin write
  • 缺少 /var/lib/mysql/mysql.sock 文件

    我正在尝试访问 mysql 当我运行 mysql 命令时 我得到以下信息 root ip 10 229 65 166 tpdatabase 1 8 0 28356 mysql 错误 2002 HY000 无法连接到 通过socket本地My
  • 堆内存和Slab分配

    我很困惑heap and free list 我有几个问题 我对C中malloc的工作原理有自己的理解 如果我错了 请纠正我 堆内存是否被组织为数据的链表 空闲列表 块 堆内存和空闲列表有区别吗 我对存储分配的理解 有待改进 当我们调用ma
  • 如何在 C++ 中检查文件是否已被另一个应用程序打开?

    我知道 有is open C 中的函数 但我希望一个程序检查文件是否尚未被另一个应用程序打开 有没有办法使用标准库来做到这一点 编辑 在答案中澄清这是针对 Linux 应用程序的 不仅标准库没有这个功能 一般来说也是不可能的 你可以 在li
  • 输出bash脚本的结果

    例如 如果我选择运行一个 bash 脚本 该脚本将输出 回显 时间 例如CheckDate sh 我如何从 Java 运行它 然后在我的 Java 程序中打印 bash 脚本的结果 日期 试试这个代码 String result null
  • 从 TestContainer 访问 Podman REST API

    我使用 Maven 3 和 Podman 1 8 0 开发一个 Java 应用程序 据我了解 Podman 提供了与 Docker 兼容的 REST API Java集成测试使用TestContainer框架 TestContainer 无
  • 如何格式化 .CSV 文件的日期字段并在字符串字段中包含多个逗号

    我有一个 CSV 文件 file csv 其数据全部用双引号引起来 文件的示例格式如下 column1 column2 column3 column4 column5 column6 column7 Column8 Column9 Colu
  • x86 平台中的 KVM 影子页表处理

    据我了解 在没有硬件支持来宾虚拟到主机物理地址转换的处理器上 KVM 使用影子页表 当来宾操作系统修改其页表时 会构建和更新影子页表 硬件中有没有专门的指令 以x86为参考 来修改页表 除非有特殊说明 否则不会对VMM 造成陷阱 Linux
  • pthread_create 编译返回错误

    我使用以下代码创建两个线程 header files include
  • Linux 内核:Spinlock SMP:为​​什么 spin_lock_irq SMP 版本中有 preempt_disable()?

    Linux内核中的原始代码是 static inline void raw spin lock irq raw spinlock t lock local irq disable preempt disable spin acquire l
  • 无法在 Linux 中阻止从命名管道 (FIFO) 读取

    很奇怪 我似乎无法完成这项工作 这是我的架构 我有一个命名管道 它将在永远运行 root读取器进程和多个应用程序编写器进程 读者进程必须是blocking当作家们在nonblocking 因此 这就是我在阅读器进程中所做的 该进程将运行ro
  • Linux 中 NDIS 过滤器的类似物是什么?

    我正在研究一个as close to real time我在linux中尽可能地使用系统 并且需要在收到特定数据包后立即发送大约600 800字节的TCP数据包 为了获得最佳的延迟 我希望这个数据包直接从内核发送 而不是将接收到的数据包一直

随机推荐

  • 2021 年 8 月 11 日

    主持人大卫 阿莫斯回答会员的问题 本周 Real Python 社区经理 Andres Pineda 也加入了 David 的行列 在这次会议上 我们讨论了 Python 新闻和更新 如何开始使用 Python 进行日志记录 如何学习编写更
  • 适合 Python 程序员的 C

    目录 The C Preprocessor 包括 定义 undef if pragma 错误 Basic C Syntax for Python Programmers 一般的 if 语句 switch 语句 循环 功能 指针 弦乐 结构体
  • 关于约翰·斯特茨

    关于约翰 斯特茨 John 是一位狂热的 Python 爱好者 也是 Real Python 教程团队的成员 约翰的教程 Python 中的模字符串格式化 Python 中的递归 简介 Python 中的函数式编程 何时以及如何使用它 Py
  • pandas 排序方法入门

    有关这些视频中使用的 REPL 的更多信息 您可以查看蟒蛇以及真正的 Python 教程探索 bpython 具有类似 IDE 功能的 Python REPL
  • 漂亮的印花

    此外print Python 包括一个漂亮的印刷品方法 此方法对于以更易于阅读的格式输出有关对象的调试信息特别有用 gt gt gt gt gt gt from pprint import pprint gt gt gt data squa
  • Python 新闻:2021 年 12 月以来的新增内容

    目录 Python 指导委员会选举 Python 新版本 Python 3 6 生命周期结束 代码的出现 Python 的下一步是什么 In 2021 年 12 月 第四个Python指导委员会像往常一样 由新成员和回归成员组成 Pytho
  • 第 12 集:Python 中的网页抓取:工具、技术和合法性

    第 12 集 Python 中的网页抓取 工具 技术和合法性 真正的 Python 播客 2020年6月5日50公尺 RSS Apple Podcasts Google Podcasts Spotify More 播客瘾君子 灰蒙蒙 袖珍铸
  • 列表:有序和任意

    您已经了解了如何创建列表 在本课程中 您将了解到列表是有序的并且可以包含任意对象的集合 定义列表时使用的顺序在列表的生命周期内保持不变 包含相同元素但顺序不同的列表是不同的 gt gt gt gt gt gt a spam egg baco
  • 在“for”循环中使用 .append() 进行附加处理

    有关本课程所涵盖概念的更多信息 您可以查看 Python enumerate 简化需要计数器的循环 真正的Python文章 Python for 循环 确定迭代 真正的Python文章
  • 设计和指导:Python 中的 OOP(概述)

    编写优秀的面向对象代码不仅仅是如何编写 句法 知道何时和何时不使用它 以及指导原则 在后面面向对象设计将帮助您编写更好的代码 在本课程中 您将了解 中的面向对象方法Python 与其他语言 您的情况不应该使用Python 中的类 继承的替代
  • 使用 Sed 命令在 Linux 中追加文本

    Sed提供根据特定模式或条件将文本附加到文件中的行的能力 您可以使用a 命令输入sed在模式匹配后添加新行 让我们深入研究现实世界的示例 以了解如何有效地利用此功能 目录 hide 1 在匹配的模式后添加一行 2 在匹配的模式后追加多行 3
  • Linux Web 服务器 (Apache) 的安装、配置和故障排除

    在本教程中 我们将具体讨论 Linux Web 服务器或 Apache Web 服务器 以及如何安装和配置它以向其他人提供您的内容 Web 服务器是一个通过 HTTP 协议处理请求的系统 您向服务器请求一个文件 它会响应所请求的文件 这可能
  • 使用 Curl 命令的 RESTful API 交互

    主要用途之一curl与 RESTful API 进行交互 RESTful API 是许多现代 Web 应用程序和服务的支柱 在本教程中 您将学习如何使用 RESTful API 进行交互卷曲命令 获取数据 发布信息以及解析各种响应 目录 h
  • NumPy 数组重塑指南

    The NumPyPython 中的库提供了强大的功能来重塑数组的维度 这就是我们将在本教程中深入探讨的内容 在整个教程中 我们将介绍 NumPy 数组重塑的含义及其重要性 然后再深入研究如何重塑不同维度的数组的细节 在本教程结束时 您将熟
  • Python 分析(检测 CPU 和内存瓶颈)

    您是否一直在代码中处理包含大量数据的数据集 并且一旦执行代码 您就会发现代码需要很长时间才能产生最终输出 嗯 这可能会令人沮丧 您可能使用了正确的语法 并且逻辑也是正确的 然而 该代码会消耗大量 RAM 并且执行时间过长 这时您应该考虑优化
  • 使用 to_json 将 Python Pandas DataFrame 转换为 JSON

    The to json函数在转换时特别有用PandasDataFrame 到 JSON 文件 它允许您转换并返回可编写为 JSON 文件的可序列化对象 该函数具有多个参数 可提供 JSON JavaScript 对象表示法 输出的自定义 其
  • 使用 Pandas loc 按多个条件选择数据

    熊猫优惠洛克财产 一种基于标签的数据选择方法 允许您根据多个条件选择数据 本教程旨在指导您在多种条件下使用 Pandas loc 函数 目录 hide 1 了解多个条件的逻辑运算符 2 使用 AND 运算符 组合条件 3 使用 OR 运算符
  • 使用 Python NLTK 的自然语言处理 (NLP)(简单示例)

    自然语言工具包 NLTK 是一个为符号和自然语言处理任务创建的 Python 库 它有潜力让每个人都可以进行自然语言处理 从英语到任何自然人类语言 目录 hide 1 安装 Python NLTK 2 文本预处理 3 句子和单词标记化
  • 如何在Python中对数字进行四舍五入

    处理数字是编程的重要组成部分 尤其是在科学应用或处理货币价值时 在这里 Python 中对数字进行四舍五入的需求变得至关重要 它允许我们将数字调整到附近的值 通常是为了降低其复杂性或使其达到一定的精度 让我们深入探讨如何在 Python 中
  • 使用 Sed p 命令打印行:综合指南

    The p命令输入sed用于打印当前模式空间 即当前文本行 您可以使用sed命令与p从文件中打印文本行的选项如下 sed n p filename 在本教程中 您将了解使用sed p用于打印文件或数据流中的行的命令 目录 hide 1 打印