特定の範囲内の単語または長さを含むGrap行?

特定の範囲内の単語または長さを含むGrap行?
1598427@931
PDD   220624P00051000 ohlc=0,0,0,0 vol=0 oi=424 nbbo=69@2316/113@532 nbbo2=69@145/113@95
PDD   220617C00051000 ohlc=0,0,0,0 vol=0 oi=434 nbbo=530@1921/710@1496 nbbo2=530@31/710@115
PDD   220722P00051000 ohlc=0,0,0,0 vol=0 oi=15 nbbo=285@1436/405@1772 nbbo2=230@15/455@15
PDD   220708C00051000 ohlc=0,0,0,0 vol=0 oi=17 nbbo=785@864/935@894 nbbo2=785@15/935@15
PDD   220624C00051000 ohlc=0,0,0,0 vol=0 oi=392 nbbo=645@771/795@947 nbbo2=645@83/795@80
PDD   220729C00051000 ohlc=0,0,0,0 vol=0 oi=0 nbbo=870@902/1190@677 nbbo2=820@15/1195@20
PDD   220708P00051000 ohlc=0,0,0,0 vol=0 oi=32 nbbo=200@1413/320@2273 nbbo2=200@15/320@356
PDD   220722C00051000 ohlc=0,0,0,0 vol=0 oi=140 nbbo=795@1630/1175@1544 nbbo2=795@51/1175@21
PDD   220729P00051000 ohlc=0,0,0,0 vol=0 oi=11 nbbo=254@3/450@3 nbbo2=254@2/570@1
CSCO  220715C00090000 ohlc=0,0,0,0 vol=0 oi=739 nbbo=0@0/4@1056 nbbo2=0@0/4@121
CSCO  220617C00090000 ohlc=0,0,0,0 vol=0 oi=203 nbbo=0@0/1@2 nbbo2=0@0/0@0
CSCO  220617P00090000 ohlc=0,0,0,0 vol=0 oi=0 nbbo=4685@654/4730@1155 nbbo2=4685@33/4730@33
CSCO  240119P00090000 ohlc=0,0,0,0 vol=0 oi=0 nbbo=4695@202/4770@193 nbbo2=4695@75/4770@33

上記のようなファイルがあります。

CSCO単語や長さを含むすべての行を見つけたいです<= 15

これを行うにはどのコマンドを使用できますか?

ベストアンサー1

grep -E拡張正規表現の場合は、シフト(|)を使用できます。

$ grep -E 'CSCO|^.{0,15}$' file
1598427@931
CSCO  220715C00090000 ohlc=0,0,0,0 vol=0 oi=739 nbbo=0@0/4@1056 nbbo2=0@0/4@121
CSCO  220617C00090000 ohlc=0,0,0,0 vol=0 oi=203 nbbo=0@0/1@2 nbbo2=0@0/0@0
CSCO  220617P00090000 ohlc=0,0,0,0 vol=0 oi=0 nbbo=4685@654/4730@1155 nbbo2=4685@33/4730@33
CSCO  240119P00090000 ohlc=0,0,0,0 vol=0 oi=0 nbbo=4695@202/4770@193 nbbo2=4695@75/4770@33

スペース(スペース、タブなど)が続く行の先頭の「CSCO」のみを一致させたい場合:

$ grep -E '^CSCO[[:space:]]|^.{0,15}$' file

または、末尾の境界マークを使用します\>(これがGNU拡張か「標準」なのか覚えておらず、Googleで検索するのは難しいです。確かにGNU grepで動作し、他の言語でも動作する可能性があります)。

$ grep -E '^CSCO\>|^.{0,15}$' file

GNU grepの情報文書では、「単語」文字を[_[:alnum:]]manページの定義とは異なり、およびperlrePerlはいくつかの接続句読点とUnicode文字も「単語」として認識します。

GNU grepを使用している場合、そのバージョンはPerlの\s(すべてのスペース)と\b(単語の境界マーカー)も理解しています。-E代わりに、-PGNU grepの-PPCREサポートオプションを使用すると、水平スペース\h認識が追加されます。例えば

$ grep -E '^CSCO\s|^.{0,15}$' file
$ grep -E '^CSCO\b|^.{0,15}$' file
$ grep -P '^CSCO\h|^.{0,15}$' file

おすすめ記事