Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 获取模式元素匹配后的元素列表_Bash_Shell_Awk_Sed_Grep - Fatal编程技术网

Bash 获取模式元素匹配后的元素列表

Bash 获取模式元素匹配后的元素列表,bash,shell,awk,sed,grep,Bash,Shell,Awk,Sed,Grep,我有一个文本文件 $ cat a.txt a_1 a_2 a_3 a_4 a_5 如果我搜索a_2,我需要得到a_2之后的所有元素,包括它。 预期产量为 a_2 a_3 a_4 a_5 请帮忙。试试这个 awk "/a_2/ { flag = 1 }; flag" file 使用awk很简单 awk '/a_2/{p=1}p' your_file 通过sed $ sed -n '/a_2/,/&/p' file a_2 a_3 a_4 a_5

我有一个文本文件

$ cat a.txt
a_1  
a_2  
a_3  
a_4  
a_5  
如果我搜索a_2,我需要得到a_2之后的所有元素,包括它。 预期产量为

a_2
a_3
a_4
a_5
请帮忙。

试试这个

awk "/a_2/ { flag = 1 }; flag" file
使用awk很简单

awk '/a_2/{p=1}p' your_file
通过sed

$ sed -n '/a_2/,/&/p' file
a_2  
a_3  
a_4  
a_5 
最简单的方法

more +"a_2" file

你能解释一下/&/?这个&,正常情况下,这是之前的匹配模式,但这里是什么?为什么一个简单的/a_2/,$p if&不是一个未结束的模式呢?我认为/&/匹配到最后一行。我相当确定,&指向模式空间中的任何sed。因此,它搜索一个_2,找到它并将其放入模式空间,然后再次搜索由引用的一个_2&但它从未找到它,所以它只是继续打印其余的文件-n'/a_2/,$p'file@fedorqui,不一定是重复的,因为另一个问题是针对sed的,这会用不同的方法给出答案。@Jidder您看到该问题中被接受的答案了吗?它的解决方案是在awk和sed中。但是,在没有sed或awk的情况下,还有很多方法可以做到这一点@Jidder标记为重复的目的是将知识集中在一个点上,而不是将好的答案分散在不同的类似问题上。因此,如果你想添加一个新的好答案,你可以在主要问题中添加,这将成为一个很好的知识点。@fedorqui也许另一个问题的标题可以更改为不特定于sed?