我看到很多关于如何使用 sed 执行搜索和替换等操作的示例和手册页。但是,我想匹配给定的字符串或正则模式表达式并显示在屏幕上。如何仅在类 Unix 操作系统下使用 sed 命令打印具有匹配模式的行?
教程详情 | |
---|---|
难度级别 | 简单的 |
根权限 | 不 |
要求 | sed |
美东时间。阅读时间 | 2分钟 |
Sed 是类 Unix 操作系统的流编辑器。它可以执行基本的文本转换:
- 输入流。
- 文件(常规文本文件)。
- 来自管道的输入 (command1 | sed -e 'expr1' | command2)。
Sed 打印语法和示例
使用以下语法:
sed '/word/p'输入 sed '/regexp/p'输入 sed -n '/regex/p' /路径/到/文件 sed -n '/regexp/p' /路径/到/文件 | less sed -n -e '/regexp/p'输入>输出 ## gnu/sed - 使用 -i 选项更新文件 ### sed -i -n -e '/regexp/p'输入
在此示例中,打印或显示 /etc/passwd 文件中的任何匹配行:
sed -n '/root/p' / etc / passwd
输出示例:
root:x:0:0:root:/root:/usr/local/sbin/nologin_corp
-n 选项要求 sed 不显示正则表达式或模式,除非明确要求这样做。尝试删除 -n 选项,您就会明白其中的区别:
sed '/root/p' / etc / passwd
您可以使用行地址打印行。在此示例中打印第二行:
sed '2p' / etc / passwd
“p”命令前面有一个“2”。数字“2”指的是第二行。您可以告诉 sed 仅在特定的一行或多行上执行打印。在此示例中打印 1 到 5 行:
sed '1,5p' / etc / passwd
'p' 命令前面是行宽地址 1,5(用逗号分隔)。您还可以使用两个正则表达式进行打印,语法为:
sed -n -e '/WORD-1/,/WORD-2/p'输入文件 sed -n -e '/regexpA/,/regexpB/p'输入文件
在此示例中,打印一个数据块,该数据块以包含“BROWN”的行开头,并以包含“GREEN”的行结尾:
sed -n -e '/BROWN/,/GREEN/p'颜色.txt
以下示例将打印从包含“GREEN”的行到文件末尾的文件部分:
sed -n '/GREEN/,$p'颜色.txt
推荐读物
- Sed 1 衬垫
- sed 手册页