スポンサーリンク
grepの-oオプションで検索にマッチした部分のみ出力
※MACターミナル(BSD系)での動作確認です。
grepの-oオプションの使い方
grepの-oオプションで検索にマッチした部分のみ出力することができます。
例えば、下記のin.txtがあったとします。
$ cat in.txt string001awk string002ls string003grep string004sed string005find string006cat
例えば、下記のように、-oオプションを付けて、正規表現で"00[0-9]"を検索します。
"00[0-9]"は、1文字目は0、2文字目は0、そして3文字目は0〜9の数字のいずれかを意味しています。
$ grep -o "00[0-9]" in.txt
下記が実行結果になります。マッチした部分のみ出力されているのが確認できます。
$ grep -o "00[0-9]" in.txt 001 002 003 004 005 006
スポンサーリンク
grepの結果を配列に格納して処理
-oオプションで指定したgrepの結果を配列に格納して処理する場合もあるかと思います。
参考記事:grepで検索された行を配列に格納する方法
下記がサンプルコードになります。
grepの結果を配列に格納して、最後にforループ処理して、配列の中身をechoで出力しています。
$ cat sample.sh #!/bin/sh array=($(grep -o "00[0-9]" in.txt)) for i in ${array[@]} do echo $i done
下記が実行結果になります。
$ ./sample.sh 001 002 003 004 005 006
Pythonを使って実現
同様のことをPythonでもできます。ただ少々コード量が多くなります。
参考:[Python]正規表現でファイルを検索して、マッチした複数文字列を取得
スポンサーリンク