Rob*_*ler 7 grep pipe sed awk stdout
我在这个论坛上发现了很多与在文本文件中查找各种值并输出围绕它的文本有关的帖子。但是,我似乎没有找到任何“面向流”。
我想在文件中找到一个特定的字符串,并只输出它后面的文本,直到到达文件末尾。换句话说,我想要一些像过滤器一样的东西,它会忽略文件中的文本,直到达到特定的字符串值,然后从那时起将文本输出到标准输出,直到文件结束。我想使用stdout以便我可以选择将输出通过管道传输到文件。
是否有 Linux 文本实用程序可以帮助我执行此操作,如果有,如何操作?或者,如果我需要编写一个 bash shell 脚本来完成此操作,我将使用哪些常规步骤和命令行实用程序来执行此操作?
例如,给出下面的示例文件:
one
two
three
four
five
Run Code Online (Sandbox Code Playgroud)
假设我想输出“三”之后的所有文本,结果将是:
four
five
Run Code Online (Sandbox Code Playgroud)
注意:我确实找到了这个看似相关的帖子,但正如你所看到的,它有点乱:
pLu*_*umo 10
使用awk
:
awk 's;/^three$/{s=1}' file
Run Code Online (Sandbox Code Playgroud)
或者
awk 's;$0=="three"{s=1}' file
Run Code Online (Sandbox Code Playgroud)
s;
如果变量s
为真,将打印该行,这是找到模式/单词后的第一次.../^three$/{s=1}
s
如果找到模式/单词,则将变量设置为 true (1)。使用 GNU sed
:
sed 0,/three/d
Run Code Online (Sandbox Code Playgroud)
请注意,Linux 是一个内核,它没有实用程序。GNUsed
是sed
GNU/Linux 系统(如 Debian GNU/Linux)上常见的实现。GNUsed
早于 Linux,并且已经被编译为可以在大多数类 Unix 系统上运行,包括大多数将 Linux 作为其内核运行的系统。它本身是70 年代后期0
UNIXsed
实用程序的自由、自由和开源重新实现(带有一些扩展,包括该地址)。
归档时间: |
|
查看次数: |
1343 次 |
最近记录: |