Perl 輸出匹配到的某兩行之間的內容

2021-10-09 20:41:42 字數 1405 閱讀 1834

#!/usr/bin/perl

open cdl, "******.cdl" or die $!;

open out, ">output.cdl" or die $!;

while ($lines=)

elsif($lines=~/ends/ and $line_control==1)

if($line_control==1)

}close cdl;

close out;

#!/usr/bin/perl

open cdl, "all.cdl" or die $!;

open out, ">output.cdl" or die $!;

open list, "list" or die $!;

@list = ;

$count = 0;

foreach my $cell(@list)

elsif($lines=~/ends/ and $line_control==1)

if($line_control==1)

}}close cdl;

close out;

close list;

#!/usr/bin/perl

if(-e "output.cdl")

open list, "list" or die $!;

@list = ;

$count = 0;

foreach my $cell(@list)

elsif($lines=~/ends/ and $line_control==1)

if($line_control==1)

}}close list;

由於while是一行一行處理的,處理完一行後,就不會再回來了,只會繼續處理後面的新行。如果list和cdl的順序不一致,就會發生下面的情況,比如:

list:

adddff

latch

muxsdff

cdl:

addmux

latch

dffsdff

output:

adddff

這是因為找到dff之後,cdl中的add/mux/latch/dff這些行都已經被處理過了,所以接下來找latch是找不到的。

為了解決這個問題,採用了open控制代碼的操作放在了foreach迴圈中,每次讀取下乙個list時,重新開啟cdl控制代碼,讓while迴圈從第一行開始處理,一旦抓到匹配行就追加

進output檔案,接著用last語句立刻結束while迴圈,並關閉控制代碼,以便跳到外層的foreach迴圈重新開啟cdl控制代碼。

awk輸出相同列的前兩行和後兩行

要求列印,第一列相同的頭兩行和後兩行 file ax bx 1 ax bx 2 ax bx 1 ax bx 8 ax bx 1 ax bx 3 ax bx 5 cx bx 1 cx bx 0 cx bx 1 cx bx 6 cx bx 9 ex bx 1 ex bx a ex bx 1 ex bx ...

python兩行輸出問題

first 我們來看問題 問題 對於給定的元組 1,2,3,4,5,6,7,8,9,10 編寫乙個程式,在一行中列印前半個值,在一行中列印後半個值 分析 在python中,終端輸出會自動分兩行輸出,所以為了能讓元組分成兩組數,我讓兩組數中以空格間隔 但結果是這樣 沒有按兩行,所以 指定了間隔符,py...

python程式的前兩行

摘抄自 一般看乙個python程式都會看到 usr bin python filename helloworld.py 作為乙個檔案的前兩行 它被稱作 組織行 原始檔的頭兩個字元是 後面跟著乙個程式。這行告訴你的linux unix系統當你 執行你的程式的時候,它應該執行哪個直譯器。chmod a ...