从头开始打印文件,直到在第 3 列中找到模式



在第三列的末尾有三个以1.0开头的数字,如何从开头打印所有行,直到找到这三个数字中的第一个(下面以粗体显示(? 有没有一个简单的单行解决方案,带有awk或sed?

-80.2743682     -8.6420053      0
-80.2740679     -8.6418526      0.0371169854015
-80.2737584     -8.641709       0.0747022394455
-80.2734489     -8.6415562      0.112728651431
-80.2731395     -8.6414126      0.150303954286
-80.27283       -8.6412689      0.187893918808
-80.2725297     -8.6411162      0.22501096103
-80.2722202     -8.6409635      0.263032506523
-80.2719108     -8.6408198      0.300612533441
-80.2716103     -8.6406581      0.33821233839
-80.27131       -8.6405053      0.375334461391
-80.2710095     -8.6403526      0.412471166086
-80.2707001     -8.6401999      0.450482911927
-80.2703906     -8.6400471      0.488509444666
-80.2700993     -8.6398853      0.52522713763
-80.2697989     -8.6397326      0.562354088058
-80.2694894     -8.6395709      0.600828217536
-80.2691981     -8.6394181      0.637071247595
-80.2688886     -8.6392473      0.676023425931
-80.2685882     -8.6390946      0.713150425596
-80.2682788     -8.6389509      0.750730603804
-80.2679783     -8.6387981      0.787872459485
-80.2676599     -8.6386635      0.825947927083
-80.2673686     -8.6385108      0.862185868818
-80.2670501     -8.6383762      0.900271491364
-80.2667406     -8.6382235      0.938293256103
-80.2664311     -8.6380798      0.975883478883
-80.2661217     -8.6379452      **1.01304928976**  <--- print until here
-80.2658214     -8.6378015      1.04972439283
-80.2655029     -8.6376578      1.08821462134

任何帮助都非常感谢。

使用 awk 是:

awk '$3>=1{exit} 1' file

你能试试下面吗?仅使用显示的示例进行编写和测试。

awk '1;$NF~/^1.0/{exit}' Input_file 

此外,如果您的Input_file有超过 3 个字段,请将上面的字段更改为:

awk '1;$3~/^1.0/{exit}' Input_file


抱歉,如果您需要打印到第 3 次出现1.0然后尝试以下操作,我对描述有点混淆(尽管您显示的粗体行只想打印到第一次出现,但添加它以防万一有人需要它(。

awk '1;$NF~/^1.0/ && ++count==3{exit}' Input_file 
sed -r '1,/.+ +.*+ +0.263/ p' -n < Input_file

这个 sed 说:

  • 不要打印Input_file中的任何内容
  • 除了,从第 1 行开始
  • 直到线路匹配/.+ +.*+ +0.263/。这意味着:
    • 1 个或多个字符,后跟
    • 1 个或多个空格,后跟
    • 1 个或多个字符,后跟
    • 1 个或多个空格,后跟
    • 数字 0.263
  • 打印这些行

正则表达式绝对可以通过指定行首和空格与制表符来改进。但总体思路就在那里。

相关内容

  • 没有找到相关文章

最新更新