Regex Sed将文本从开始提取为字符串
我的意见如下:Regex Sed将文本从开始提取为字符串,regex,sed,Regex,Sed,我的意见如下: xxxx1 xxxx2 xxxx3 END xxxx4 xxxx5 我想要这个: xxxx1 xxxx2 xxxx3 我试过了 <<input>> | sed -n '/./,/^END/p' | sed '$d' 似乎是“.”在这里不起作用。这里有一个使用awk的解决方案 awk '/^xxxx/{f=1}/^END/{f=0;exit}{ if (f!=0){print $0}}' file 输出 xxxx xxxx xxxx f=1设置一
xxxx1
xxxx2
xxxx3
END
xxxx4
xxxx5
我想要这个:
xxxx1
xxxx2
xxxx3
我试过了
<<input>> | sed -n '/./,/^END/p' | sed '$d'
似乎是“.”在这里不起作用。这里有一个使用
awk
的解决方案
awk '/^xxxx/{f=1}/^END/{f=0;exit}{ if (f!=0){print $0}}' file
输出
xxxx
xxxx
xxxx
f=1
设置一个标志,指示已找到起始值。只要设置了该标志值(我们使用它进行测试)
如果(f!=0)
,则打印当前输入行。当找到终止值/^END/
时,变量未设置,我们必须退出,因为在这种情况下,将再次找到起始值,并将其打印出来
IHTH这可能适合您(GNU-sed):
打印所有行,直到一行只包含结束
,然后退出
备选方案:
sed -n '/^END$/q;p' file
如果目标是获取所有数据,直到
结束
和xxxx
可以通过任何方式完成,那么这个awk
应该可以:
<<input>> | awk '/END/ {exit} 1'
xxxx1
xxxx2
xxxx3
|awk'/END/{exit}1'
三十一
三十二
三十三
- 如果找到
,则退出END
始终为真,由于没有操作,请执行默认操作,即打印1
sed'/^END/,$d'
或
sed-n'1,/^END/{/^END/!p}'
不是sed用户。这是什么意思'/./,/^END/p'
我想,xxxx
可以是任何随机的东西。
sed -n '/^END$/q;p' file
<<input>> | awk '/END/ {exit} 1'
xxxx1
xxxx2
xxxx3