我有一个输入:
achil 1 234671.82694245825 234671.82694245825 0.43995134290095084
achil 2 234671.82694245825 234671.82694245825 0.43995134290095084
o 0 1 0 1 1 5.732820000 0.000 = PERIOD(0)
4
5
6
1
2
我想从o 0 1 0 1 1 5.732820000 0.000 = PERIOD(0)
行开始打印到文件末尾。
所需的输出:
o 0 1 0 1 1 5.732820000 0.000 = PERIOD(0)
4
5
6
1
2
我尝试过:
awk '/o 0\s+1 0 1 1\s+5.732820000\s+0.000 = PERIOD(0)/,/*/' input > output
,输出为空文件。请问怎么了?
答案 0 :(得分:2)
尝试以下操作:
awk '/o 0 1 0 1 1/,0' input
请考虑使用此衬纸awk /pattern1/,/pattern2/' input
。它匹配所有以匹配“ pattern1
”的行开始并一直持续到匹配“ pattern2
”(包括)的行。
在这种单行代码中,“ pattern1
”为“ o 0 1 0 1 1
”,“ pattern2
”仅为0
(假)。因此,这种单行打印从匹配“ o 0 1 0 1 1
”的行开始的所有行,并继续到文件结尾(因为0始终为false,而“ pattern2
”从未匹配)
答案 1 :(得分:2)
这也可以:
awk '/o 0 1 0 1 1/ {f=1} f' file
o 0 1 0 1 1 5.732820000 0.000 = PERIOD(0)
4
5
6
1
2
找到模式后,将标志f
设置为true。
当标志f
为true时,执行默认操作,打印