the opy book

Thu Oct 10 09:33:07 JST 2019 (modified: Fri Oct 11 09:21:03 JST 2019)
views: 641, keywords:

  このエントリーをはてなブックマークに追加 

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






このサイトではGoogle Analyticsやその他ソーシャルボタンのためにCookieを使用しています。もし同意いただけない場合はブラウザでクッキーを無効にして閲覧をお願いします。This site uses cookies for Google AdSense and some social buttons. If you cannot accept our use of cookies, please disable cookies on your browser.