Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
grep regex:从目录中的所有文件中提取模式_Regex_Grep - Fatal编程技术网

grep regex:从目录中的所有文件中提取模式

grep regex:从目录中的所有文件中提取模式,regex,grep,Regex,Grep,假设一个目录有两个文件。这是目录 File1.txt tagstart random string tagend tagstart random string tagend File2.txt tagstart random string tagend tagstart random string tagend 我想grep目录并提取具有以下模式的行 tagstart <any string> tagend file1.txt: # This is the file nr.

假设一个目录有两个文件。这是目录

File1.txt

tagstart random string tagend

tagstart random string tagend
File2.txt

tagstart random string tagend

tagstart random string tagend
我想grep目录并提取具有以下模式的行

tagstart <any string> tagend
file1.txt:

# This is the file nr.1
tagstart 123 tagend
tagstart abc tagend
kill tagstart def tagend kenny
file2.txt:

# This is the file nr.2
tagstart 123 tagend
tagstart abc tagend
kill tagstart xxx tagend kenny
此命令将提取标记及其包含的字符串:

 cat file1.txt file2.txt | grep -o -E "tagstart(.*?)tagend" > output.txt
output.txt:

tagstart 123 tagend
tagstart abc tagend
tagstart def tagend
tagstart 123 tagend
tagstart abc tagend
tagstart xxx tagend
tagstart 123 tagend : 2
tagstart abc tagend : 2
tagstart def tagend : 1
tagstart xxx tagend : 1
额外的饼干,让您愉快:

此命令将执行类似的操作,但将仅显示已排序的唯一记录,并且这些记录会出现(出于统计目的):

output.txt:

tagstart 123 tagend
tagstart abc tagend
tagstart def tagend
tagstart 123 tagend
tagstart abc tagend
tagstart xxx tagend
tagstart 123 tagend : 2
tagstart abc tagend : 2
tagstart def tagend : 1
tagstart xxx tagend : 1
file1.txt:

# This is the file nr.1
tagstart 123 tagend
tagstart abc tagend
kill tagstart def tagend kenny
file2.txt:

# This is the file nr.2
tagstart 123 tagend
tagstart abc tagend
kill tagstart xxx tagend kenny
此命令将提取标记及其包含的字符串:

 cat file1.txt file2.txt | grep -o -E "tagstart(.*?)tagend" > output.txt
output.txt:

tagstart 123 tagend
tagstart abc tagend
tagstart def tagend
tagstart 123 tagend
tagstart abc tagend
tagstart xxx tagend
tagstart 123 tagend : 2
tagstart abc tagend : 2
tagstart def tagend : 1
tagstart xxx tagend : 1
额外的饼干,让您愉快:

此命令将执行类似的操作,但将仅显示已排序的唯一记录,并且这些记录会出现(出于统计目的):

output.txt:

tagstart 123 tagend
tagstart abc tagend
tagstart def tagend
tagstart 123 tagend
tagstart abc tagend
tagstart xxx tagend
tagstart 123 tagend : 2
tagstart abc tagend : 2
tagstart def tagend : 1
tagstart xxx tagend : 1

正则表达式很少是解析xml的好方法。您是否考虑过类似于
标记开始一个标记开始两个标记结束一个标记结束

tagstart一个tagstart两个tagend一个tagend


tagstart一个tagstart两个tagend


tagstart-two-tagend


tagstart两个tagend一个tagend


都符合你的标准。你想要这些中的哪一个

正则表达式很少是解析xml的好方法。您是否考虑过类似于
标记开始一个标记开始两个标记结束一个标记结束

tagstart一个tagstart两个tagend一个tagend


tagstart一个tagstart两个tagend


tagstart-two-tagend


tagstart两个tagend一个tagend


都符合你的标准。你想要这些中的哪一个

您的模式与文件内容根本不匹配—您能澄清您的问题吗?正则表达式很少是解析xml的好方法。您是否考虑过类似于OneWoone的情况?您希望从这样的输入中得到什么样的结果?基本上,我希望提取所有在标记开始和结束之间有任何字符串的标记出现,作为正确格式化的答案。您的模式与您的文件内容根本不匹配-您能澄清您的问题吗?正则表达式很少是解析xml的好方法。您是否考虑过类似于OneWoone的情况?你希望从这样的输入中得到什么样的结果?基本上,我想提取所有在标记的开始和结束之间有任何字符串的标记出现,作为正确格式化的答案。Jim,我之前的问题不清楚。我编辑了这个问题。我要寻找的模式是标记jim之间可能出现的任何字符串,我之前的问题不清楚。我编辑了这个问题。我正在寻找的模式是标记之间可能出现的任何字符串。日志文件也可能有其他不需要的信息。让我更具体一点。我正在寻找一个正则表达式,它将提取标记之间的任何字符串。如果file1.txt在开始前有一些废话,那么会怎么样?tagstart xyz tagend废话在结束后,我仍然只想提取“tagstart xyz tagend”。日志文件可能还有其他不需要的信息。让我更具体一点。我正在寻找一个正则表达式,它将提取标记之间的任何字符串。如果file1.txt在开始标记开始之前有一些废话,那么在结束之后我仍然只想提取“tagstart xyz tagend”,谢谢kaestur。我的日志文件没有这样的标记结构。我正在寻找一个正则表达式,它将提取标记Hanks kaestur之间的任何字符串。我的日志文件没有这样的标记结构。我正在寻找一个正则表达式,将提取标签之间的任何字符串