Linux/Unix:sed命令仅打印匹配行
时间:2020-01-09 10:46:07 来源:igfitidea点击:
如何使用sed进行搜索和替换等操作。
但是,如何匹配给定的字符串或者正则模式表达式并在屏幕上显示。
如何仅在Unix之类的操作系统下使用sed命令打印具有匹配模式的行?
Sed是用于Unix之类的操作系统的流编辑器。它可以对以下内容执行基本的文本转换:
- 输入流。
- 一个文件(普通文本文件)。
- 来自管道的输入(command1 | sed -e expr1 | command2)。
sed打印语法和示例
使用以下语法:
sed '/word/p' input sed '/regexp/p' input sed -n '/regex/p' /path/to/file sed -n '/regexp/p' /path/to/file | less sed -n -e '/regexp/p' input > output ## gnu/sed - update file with -i option ### sed -i -n -e '/regexp/p' input
在此示例中,打印或者显示/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' input.file sed -n -e '/regexpA/,/regexpB/p' input.file
在此示例中,打印一个数据块,该数据块以包含BROWN的行开始,以包含GREEN的行结束:
sed -n -e '/BROWN/,/GREEN/p' colours.txt
下面的示例将从包含GREEN的行到文件末尾打印文件的一部分:
sed -n '/GREEN/,$p' colours.txt