Regex grep并显示两个引用中的所有行
我有一个这样的数据文件-- 这里M!=N 我正在尝试转储只属于Regex grep并显示两个引用中的所有行,regex,unix,grep,Regex,Unix,Grep,我有一个这样的数据文件-- 这里M!=N 我正在尝试转储只属于#流0-- 但问题是我既不知道N的长度也不知道M的长度 我需要一些命令来显示匹配后的所有数据(#stream 0),直到它到达下一个字符串#stream 我能和格雷普一起做吗?我该怎么做 使用awk,它有以下功能,语法简单: awk '/# stream 0/,/# stream 1/' data.txt 请注意,我避免无用地使用cat:-) /startpattern/,/endpattern/语法对开始模式和结束模式之间的每一
#流0
--
但问题是我既不知道N的长度也不知道M的长度
我需要一些命令来显示匹配后的所有数据(#stream 0
),直到它到达下一个字符串#stream
我能和格雷普一起做吗?我该怎么做 使用awk,它有以下功能,语法简单:
awk '/# stream 0/,/# stream 1/' data.txt
请注意,我避免无用地使用cat
:-)
/startpattern/,/endpattern/
语法对开始模式和结束模式之间的每一行计算为true。默认操作是打印行,因此不需要明确地告诉awk这样做。awk
可以很容易地做到这一点
awk '/# stream 0/,/# stream 1/' input
将打印两个图案之间的所有线条匹配
# stream 0
....
....
.... N lines of data
# stream 1
如果要使用grep
,则可以删除换行符并grep
结果
cat input | tr -d '\n' | grep -o '# stream 0.*# stream 1'
如果删除了所有换行符,它将产生混乱的输出如果您确实坚持使用
grep
,您可以这样做:
grep -A 999999 "stream 0" file | grep -B 999999 "stream 1"
您也可以使用sed
执行此操作:
sed -ne '/stream 0/,/stream 1/p' file
grep -A 999999 "stream 0" file | grep -B 999999 "stream 1"
sed -ne '/stream 0/,/stream 1/p' file