Grepはファイル内のテキストを検索し、テキストの最初の3行を印刷します。

Grepはファイル内のテキストを検索し、テキストの最初の3行を印刷します。

ファイルがあり、ファイル内の複数のファイル名を探しています。検索テキストの例intl_reg.jcl。見つけたら、その上に3行のテキストをインポートする必要があります。たとえば、以下はファイルの4行です。 「残高登録された留学生」という説明 前のテキストは常にCHOICEで、その後に説明が続きます。

CHOICE List registered international students with balances   
SHORTCUT 8  
PROCESS CHDIR /d3/locban/arsys  
PROCESS CMD ksh /d3/locban/arsys/intl_reg.jcl

次のようにリストするには、grepコマンドが必要です。

intl_reg.jcl  registered international students with balances

ベストアンサー1

使用幸せ(以前のPerl_6)

~$ raku -e 'my @a; for lines() { 
            if @a.elems == 4 { @a.push($_); @a.shift } 
            elsif @a.elems < 4 { @a.push($_) }; 
            if .match( /intl_reg\.jcl/ ) and @a.elems == 4 {
            say $<>.Str, @a[0].split( /<?after List>/ ).[1] }; 
            };' file

つまり、@a配列を宣言してlinesコマンドラインから読み込みます。入力は4になるまで配列に追加され、push最大サイズを4つの要素に維持するために最初の要素が削除されます。@aelemsshift

配列に4つの要素が含まれていることmatchが確認されたら、一致する変数(と同じ)を印刷し、3行前に記録された行を印刷して、必要な文字列を適切に返します。and$<>$<>$/split

入力例:

A CHOICE List registered international students with balances   
A SHORTCUT 8  
A PROCESS CHDIR /d3/locban/arsys  
A PROCESS CMD ksh /d3/locban/arsys/intl_reg.jcl
B CHOICE List registered international students with balances   
B SHORTCUT 8  
B PROCESS CHDIR /d3/locban/arsys  
B PROCESS CMD ksh /d3/locban/arsys/intl_reg.jcl

出力例:

intl_reg.jcl registered international students with balances   
intl_reg.jcl registered international students with balances  

https://raku.org

おすすめ記事