the opy book

Thu Oct 10 09:33:07 JST 2019 (modified: Fri Oct 11 09:21:03 JST 2019)
views: 1286, keywords: この記事は最終更新日が4年以上前のものです。

3. パターンによる検索

 opyは、AWKのようにgrepの拡張版として利用することができます。たとえば、次の例はseq 5の結果から偶数の行を検索するものです。

$ seq 5
   1
   2
   3
   4
   5
   $ seq 5 | opy 'F1%2==0'
   2
   4

 opyに引数として与えたF1%2==0のことを「パターン」と呼びます。パターンにはboolを返す式を記述できます。いくつか例を示します。

### F1の文字列の長さが3のものを検索 ###
   $ cat hoge
   aaa bb
   ccccc d
   eeee fffff
   $ cat hoge | opy 'len(F1)==3'
   aaa bb
   ### 2以上4未満を検索 ###
   $ seq 5 | opy '2<=F1<4'
   2
   3
   ### 5つの数字が全て異なる行を出力 ###
   $ cat nums 
   1 2 3 4 5
   2 3 3 5 4
   1 2 2 3 3
   $ cat nums | opy 'len(set(F[1:]))==5'
   1 2 3 4 5

 正規表現は、次のようにr_という関数を通して使えます。

### 1で終わるものを検索 ###
   $ seq 30 | opy 'r_("1$")'
   1
   11
   21
   ### 第2フィールドの末尾が0で終わるものを検索 ###
   $ seq 30 | xargs -n 9      # これが入力
   1 2 3 4 5 6 7 8 9
   10 11 12 13 14 15 16 17 18
   19 20 21 22 23 24 25 26 27
   28 29 30
   $ seq 30 | xargs -n 9 | opy 'r_("0$", F2)' #r_にF2を指定
   19 20 21 22 23 24 25 26 27
ノート   このエントリーをはてなブックマークに追加 
 

やり散らかし一覧

記事いろいろ