助け合いフォーラム
LinuC Lv1-101(Ver10.0)
問題ID : 14855
問題を開く
検索パターンをファイルから読み込むgrepコマンドのオプションは次のうちどれか。
正解
-f
解説
grepコマンドの書式と主なオプションは以下のとおりです。
grep [オプション] 検索パターン [ファイル名]
![<img src="/mondai3/img/jpg/k45042.jpg">](https://ping-t-production-strg.s3.ap-northeast-1.amazonaws.com/uploads/question_image/file/11527/k45042.jpg?X-Amz-Expires=600&X-Amz-Date=20240727T083001Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEA0aDmFwLW5vcnRoZWFzdC0xIkcwRQIgBR0DVmIxOywNgqNNcp1VAsWgZ56Z129l1Ro%2BFuccQ8QCIQDx4f1WXM8EOZfFP33zct3mlUyf0VF4U6vMFLS9G8JyhiqxBAjm%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDYyMzQyOTgyNzI3NSIMXuR24sgpKVcYyWQgKoUEUZeggPu%2F4ByKjoTPLvCh8feCV88jweRbCrzsnw8%2F0bTTeJ57gRVRLRb4SJYiAf%2FEAMCWFqLbwLeYznJa6kfp3wRsC3FAFbm01I5TWfaalBhrx3EN9IA2Wr2FKk9J6Vr9T%2BF2MgJR6HyppufoH%2BjuSe3eK4iWsvr%2BuMB10QNKOXWqEEHc4EgYfOx4mmrzOxznuab025q8VMLLDqScTGEI5pO6N1bDVstIZiANAkI9pFx8btVUhGW9%2BURPf2pzfXgLaG2XcD5VA5PslrIocXEnKHIXKUkxm%2F14CCEdtr7B7wgLofGSiHLD4V1mgXj9ugUZFokQ0FM%2Ff%2FHNCxGDjPXEGLkOWxksfOv%2BJbpUG5en%2BGo0cJThU6hz8QzwW%2Bs9yu5svtlWMeIS6ySb7mLSDnZSZrEzPsez04F%2BclAzbZYD1mqbMnV7NqV3LIGtBFj7FfiGmUCET1QT7HmtqUMsdkmyf6%2BQpzcPobs8LdWHki6PxgWKOjlOSC0Qm2tFk1GrYujX%2BIE9ldyW%2F5GNxwjGhD3fHnqsrDbdeyQnO64IQpgXvxIiXKE9ib3ciEr5Nz7gHaGKb7CSZpWD1imLEmd5hCX2CAvY33RhiwQdkmWBVBeyi5vY3mUfOX1Soh7CXQvi8Yg%2FLIEyneoO48dNbhuZao%2BkjuSSbRRTcMLS6sLmC17jU3o9n899SzDP9JG1BjqmARKHD3K6yP2Q7YlUzKgIMRaVxk07lCQ5%2BB3Do0Uvu8FOqchgIWTUVouASAaOyPyuQyUPeXqtTmCyLbrKCadR6wwlbLKgb0GKnRx4rTui1gvsyTx2P4JQNusMqxuk7XN5K1MQfwaLauKlQrPszMUwB5sKjxV4XQvaaK9RLyN1b5wrfZ2%2BQsXhKeaGFQVVbbBTo1ejhfyfsSwJ47Wc14Q6q%2B3cSpqvqYk%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLFTPVHPUH2%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=2533c36a49f02973d7cf67d5132090096ef2781fb8707de9da6c6383b5681fba)
上表より正解は「-f」です。
例)「test.txt」ファイルから、行頭が「#」ではない行を表示する場合
![【図を表示】](https://ping-t-production-strg.s3.ap-northeast-1.amazonaws.com/uploads/question_image/file/11558/k45192.jpg?X-Amz-Expires=600&X-Amz-Date=20240727T083001Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEA0aDmFwLW5vcnRoZWFzdC0xIkcwRQIgBR0DVmIxOywNgqNNcp1VAsWgZ56Z129l1Ro%2BFuccQ8QCIQDx4f1WXM8EOZfFP33zct3mlUyf0VF4U6vMFLS9G8JyhiqxBAjm%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDYyMzQyOTgyNzI3NSIMXuR24sgpKVcYyWQgKoUEUZeggPu%2F4ByKjoTPLvCh8feCV88jweRbCrzsnw8%2F0bTTeJ57gRVRLRb4SJYiAf%2FEAMCWFqLbwLeYznJa6kfp3wRsC3FAFbm01I5TWfaalBhrx3EN9IA2Wr2FKk9J6Vr9T%2BF2MgJR6HyppufoH%2BjuSe3eK4iWsvr%2BuMB10QNKOXWqEEHc4EgYfOx4mmrzOxznuab025q8VMLLDqScTGEI5pO6N1bDVstIZiANAkI9pFx8btVUhGW9%2BURPf2pzfXgLaG2XcD5VA5PslrIocXEnKHIXKUkxm%2F14CCEdtr7B7wgLofGSiHLD4V1mgXj9ugUZFokQ0FM%2Ff%2FHNCxGDjPXEGLkOWxksfOv%2BJbpUG5en%2BGo0cJThU6hz8QzwW%2Bs9yu5svtlWMeIS6ySb7mLSDnZSZrEzPsez04F%2BclAzbZYD1mqbMnV7NqV3LIGtBFj7FfiGmUCET1QT7HmtqUMsdkmyf6%2BQpzcPobs8LdWHki6PxgWKOjlOSC0Qm2tFk1GrYujX%2BIE9ldyW%2F5GNxwjGhD3fHnqsrDbdeyQnO64IQpgXvxIiXKE9ib3ciEr5Nz7gHaGKb7CSZpWD1imLEmd5hCX2CAvY33RhiwQdkmWBVBeyi5vY3mUfOX1Soh7CXQvi8Yg%2FLIEyneoO48dNbhuZao%2BkjuSSbRRTcMLS6sLmC17jU3o9n899SzDP9JG1BjqmARKHD3K6yP2Q7YlUzKgIMRaVxk07lCQ5%2BB3Do0Uvu8FOqchgIWTUVouASAaOyPyuQyUPeXqtTmCyLbrKCadR6wwlbLKgb0GKnRx4rTui1gvsyTx2P4JQNusMqxuk7XN5K1MQfwaLauKlQrPszMUwB5sKjxV4XQvaaK9RLyN1b5wrfZ2%2BQsXhKeaGFQVVbbBTo1ejhfyfsSwJ47Wc14Q6q%2B3cSpqvqYk%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLFTPVHPUH2%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=9ba92f54ea3d40f74ccfa9dfe0838105f5228d4a69a7d33b15f46728bbbf2c39)
その他の選択肢については上表をご確認ください。
grep [オプション] 検索パターン [ファイル名]
![<img src="/mondai3/img/jpg/k45042.jpg">](https://ping-t-production-strg.s3.ap-northeast-1.amazonaws.com/uploads/question_image/file/11527/k45042.jpg?X-Amz-Expires=600&X-Amz-Date=20240727T083001Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEA0aDmFwLW5vcnRoZWFzdC0xIkcwRQIgBR0DVmIxOywNgqNNcp1VAsWgZ56Z129l1Ro%2BFuccQ8QCIQDx4f1WXM8EOZfFP33zct3mlUyf0VF4U6vMFLS9G8JyhiqxBAjm%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDYyMzQyOTgyNzI3NSIMXuR24sgpKVcYyWQgKoUEUZeggPu%2F4ByKjoTPLvCh8feCV88jweRbCrzsnw8%2F0bTTeJ57gRVRLRb4SJYiAf%2FEAMCWFqLbwLeYznJa6kfp3wRsC3FAFbm01I5TWfaalBhrx3EN9IA2Wr2FKk9J6Vr9T%2BF2MgJR6HyppufoH%2BjuSe3eK4iWsvr%2BuMB10QNKOXWqEEHc4EgYfOx4mmrzOxznuab025q8VMLLDqScTGEI5pO6N1bDVstIZiANAkI9pFx8btVUhGW9%2BURPf2pzfXgLaG2XcD5VA5PslrIocXEnKHIXKUkxm%2F14CCEdtr7B7wgLofGSiHLD4V1mgXj9ugUZFokQ0FM%2Ff%2FHNCxGDjPXEGLkOWxksfOv%2BJbpUG5en%2BGo0cJThU6hz8QzwW%2Bs9yu5svtlWMeIS6ySb7mLSDnZSZrEzPsez04F%2BclAzbZYD1mqbMnV7NqV3LIGtBFj7FfiGmUCET1QT7HmtqUMsdkmyf6%2BQpzcPobs8LdWHki6PxgWKOjlOSC0Qm2tFk1GrYujX%2BIE9ldyW%2F5GNxwjGhD3fHnqsrDbdeyQnO64IQpgXvxIiXKE9ib3ciEr5Nz7gHaGKb7CSZpWD1imLEmd5hCX2CAvY33RhiwQdkmWBVBeyi5vY3mUfOX1Soh7CXQvi8Yg%2FLIEyneoO48dNbhuZao%2BkjuSSbRRTcMLS6sLmC17jU3o9n899SzDP9JG1BjqmARKHD3K6yP2Q7YlUzKgIMRaVxk07lCQ5%2BB3Do0Uvu8FOqchgIWTUVouASAaOyPyuQyUPeXqtTmCyLbrKCadR6wwlbLKgb0GKnRx4rTui1gvsyTx2P4JQNusMqxuk7XN5K1MQfwaLauKlQrPszMUwB5sKjxV4XQvaaK9RLyN1b5wrfZ2%2BQsXhKeaGFQVVbbBTo1ejhfyfsSwJ47Wc14Q6q%2B3cSpqvqYk%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLFTPVHPUH2%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=2533c36a49f02973d7cf67d5132090096ef2781fb8707de9da6c6383b5681fba)
上表より正解は「-f」です。
例)「test.txt」ファイルから、行頭が「#」ではない行を表示する場合
![【図を表示】](https://ping-t-production-strg.s3.ap-northeast-1.amazonaws.com/uploads/question_image/file/11558/k45192.jpg?X-Amz-Expires=600&X-Amz-Date=20240727T083001Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEA0aDmFwLW5vcnRoZWFzdC0xIkcwRQIgBR0DVmIxOywNgqNNcp1VAsWgZ56Z129l1Ro%2BFuccQ8QCIQDx4f1WXM8EOZfFP33zct3mlUyf0VF4U6vMFLS9G8JyhiqxBAjm%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDYyMzQyOTgyNzI3NSIMXuR24sgpKVcYyWQgKoUEUZeggPu%2F4ByKjoTPLvCh8feCV88jweRbCrzsnw8%2F0bTTeJ57gRVRLRb4SJYiAf%2FEAMCWFqLbwLeYznJa6kfp3wRsC3FAFbm01I5TWfaalBhrx3EN9IA2Wr2FKk9J6Vr9T%2BF2MgJR6HyppufoH%2BjuSe3eK4iWsvr%2BuMB10QNKOXWqEEHc4EgYfOx4mmrzOxznuab025q8VMLLDqScTGEI5pO6N1bDVstIZiANAkI9pFx8btVUhGW9%2BURPf2pzfXgLaG2XcD5VA5PslrIocXEnKHIXKUkxm%2F14CCEdtr7B7wgLofGSiHLD4V1mgXj9ugUZFokQ0FM%2Ff%2FHNCxGDjPXEGLkOWxksfOv%2BJbpUG5en%2BGo0cJThU6hz8QzwW%2Bs9yu5svtlWMeIS6ySb7mLSDnZSZrEzPsez04F%2BclAzbZYD1mqbMnV7NqV3LIGtBFj7FfiGmUCET1QT7HmtqUMsdkmyf6%2BQpzcPobs8LdWHki6PxgWKOjlOSC0Qm2tFk1GrYujX%2BIE9ldyW%2F5GNxwjGhD3fHnqsrDbdeyQnO64IQpgXvxIiXKE9ib3ciEr5Nz7gHaGKb7CSZpWD1imLEmd5hCX2CAvY33RhiwQdkmWBVBeyi5vY3mUfOX1Soh7CXQvi8Yg%2FLIEyneoO48dNbhuZao%2BkjuSSbRRTcMLS6sLmC17jU3o9n899SzDP9JG1BjqmARKHD3K6yP2Q7YlUzKgIMRaVxk07lCQ5%2BB3Do0Uvu8FOqchgIWTUVouASAaOyPyuQyUPeXqtTmCyLbrKCadR6wwlbLKgb0GKnRx4rTui1gvsyTx2P4JQNusMqxuk7XN5K1MQfwaLauKlQrPszMUwB5sKjxV4XQvaaK9RLyN1b5wrfZ2%2BQsXhKeaGFQVVbbBTo1ejhfyfsSwJ47Wc14Q6q%2B3cSpqvqYk%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLFTPVHPUH2%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=9ba92f54ea3d40f74ccfa9dfe0838105f5228d4a69a7d33b15f46728bbbf2c39)
その他の選択肢については上表をご確認ください。
参考
正規表現とは、文字列の特定のパターンを認識する為に使用する表現方法です。文字列の検索や置換などを行う際に利用します。正規表現には基本正規表現(BRE: Basic Regular Expression)と拡張正規表現(ERE: Extended Regular Expression)があります。
以下は主な正規表現とその使用例をまとめたものです。
![【図を表示】](https://ping-t-production-strg.s3.ap-northeast-1.amazonaws.com/uploads/question_image/file/11306/k45041.jpg?X-Amz-Expires=600&X-Amz-Date=20240727T083001Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEA0aDmFwLW5vcnRoZWFzdC0xIkcwRQIgBR0DVmIxOywNgqNNcp1VAsWgZ56Z129l1Ro%2BFuccQ8QCIQDx4f1WXM8EOZfFP33zct3mlUyf0VF4U6vMFLS9G8JyhiqxBAjm%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDYyMzQyOTgyNzI3NSIMXuR24sgpKVcYyWQgKoUEUZeggPu%2F4ByKjoTPLvCh8feCV88jweRbCrzsnw8%2F0bTTeJ57gRVRLRb4SJYiAf%2FEAMCWFqLbwLeYznJa6kfp3wRsC3FAFbm01I5TWfaalBhrx3EN9IA2Wr2FKk9J6Vr9T%2BF2MgJR6HyppufoH%2BjuSe3eK4iWsvr%2BuMB10QNKOXWqEEHc4EgYfOx4mmrzOxznuab025q8VMLLDqScTGEI5pO6N1bDVstIZiANAkI9pFx8btVUhGW9%2BURPf2pzfXgLaG2XcD5VA5PslrIocXEnKHIXKUkxm%2F14CCEdtr7B7wgLofGSiHLD4V1mgXj9ugUZFokQ0FM%2Ff%2FHNCxGDjPXEGLkOWxksfOv%2BJbpUG5en%2BGo0cJThU6hz8QzwW%2Bs9yu5svtlWMeIS6ySb7mLSDnZSZrEzPsez04F%2BclAzbZYD1mqbMnV7NqV3LIGtBFj7FfiGmUCET1QT7HmtqUMsdkmyf6%2BQpzcPobs8LdWHki6PxgWKOjlOSC0Qm2tFk1GrYujX%2BIE9ldyW%2F5GNxwjGhD3fHnqsrDbdeyQnO64IQpgXvxIiXKE9ib3ciEr5Nz7gHaGKb7CSZpWD1imLEmd5hCX2CAvY33RhiwQdkmWBVBeyi5vY3mUfOX1Soh7CXQvi8Yg%2FLIEyneoO48dNbhuZao%2BkjuSSbRRTcMLS6sLmC17jU3o9n899SzDP9JG1BjqmARKHD3K6yP2Q7YlUzKgIMRaVxk07lCQ5%2BB3Do0Uvu8FOqchgIWTUVouASAaOyPyuQyUPeXqtTmCyLbrKCadR6wwlbLKgb0GKnRx4rTui1gvsyTx2P4JQNusMqxuk7XN5K1MQfwaLauKlQrPszMUwB5sKjxV4XQvaaK9RLyN1b5wrfZ2%2BQsXhKeaGFQVVbbBTo1ejhfyfsSwJ47Wc14Q6q%2B3cSpqvqYk%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLFTPVHPUH2%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=9c00a7ef8b597b68b243fc6631620778194c0d0a6c7fe4bb459a5602fc476283)
なお、正規表現の「*」と、シェルによって解釈されるメタキャラクタの「*」では意味が異なるので注意してください。シェルは「*」を0文字以上の文字列と解釈します。
正規表現は明示的に「'」(シングルクォーテーション)や「"」(ダブルクォーテーション)の引用符で囲う事ができます。これらの引用符で囲まれた正規表現の記号は、シェルにメタキャラクタとして扱われなくなります。
正規表現を利用する主なコマンドは以下のとおりです。
・grep
ファイルや標準入力から、検索パターンにマッチする文字列を含む行を抽出するコマンド
なお、「-E」オプションを併用すると拡張正規表現が使えます(egrepコマンドと同様)。
・sed
ファイルや標準入力の内容を編集して表示するコマンド
例1)1から5までのいずれかの文字がある行を「test.txt」ファイルから抽出する場合
$ grep '[1-5]' test.txt
例2)「test.txt」ファイルの「#」から始まる行を削除して出力する場合
$ sed '/^#/d' test.txt
基本正規表現と拡張正規表現の違いに注意してください。grepコマンドは、-Eオプションを付けないと検索パターンを基本正規表現と判断しますので、上表の拡張正規表現が使えません。
実行例)
![【図を表示2】](https://ping-t-production-strg.s3.ap-northeast-1.amazonaws.com/uploads/question_image/file/11307/kk45041.jpg?X-Amz-Expires=600&X-Amz-Date=20240727T083001Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEA0aDmFwLW5vcnRoZWFzdC0xIkcwRQIgBR0DVmIxOywNgqNNcp1VAsWgZ56Z129l1Ro%2BFuccQ8QCIQDx4f1WXM8EOZfFP33zct3mlUyf0VF4U6vMFLS9G8JyhiqxBAjm%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDYyMzQyOTgyNzI3NSIMXuR24sgpKVcYyWQgKoUEUZeggPu%2F4ByKjoTPLvCh8feCV88jweRbCrzsnw8%2F0bTTeJ57gRVRLRb4SJYiAf%2FEAMCWFqLbwLeYznJa6kfp3wRsC3FAFbm01I5TWfaalBhrx3EN9IA2Wr2FKk9J6Vr9T%2BF2MgJR6HyppufoH%2BjuSe3eK4iWsvr%2BuMB10QNKOXWqEEHc4EgYfOx4mmrzOxznuab025q8VMLLDqScTGEI5pO6N1bDVstIZiANAkI9pFx8btVUhGW9%2BURPf2pzfXgLaG2XcD5VA5PslrIocXEnKHIXKUkxm%2F14CCEdtr7B7wgLofGSiHLD4V1mgXj9ugUZFokQ0FM%2Ff%2FHNCxGDjPXEGLkOWxksfOv%2BJbpUG5en%2BGo0cJThU6hz8QzwW%2Bs9yu5svtlWMeIS6ySb7mLSDnZSZrEzPsez04F%2BclAzbZYD1mqbMnV7NqV3LIGtBFj7FfiGmUCET1QT7HmtqUMsdkmyf6%2BQpzcPobs8LdWHki6PxgWKOjlOSC0Qm2tFk1GrYujX%2BIE9ldyW%2F5GNxwjGhD3fHnqsrDbdeyQnO64IQpgXvxIiXKE9ib3ciEr5Nz7gHaGKb7CSZpWD1imLEmd5hCX2CAvY33RhiwQdkmWBVBeyi5vY3mUfOX1Soh7CXQvi8Yg%2FLIEyneoO48dNbhuZao%2BkjuSSbRRTcMLS6sLmC17jU3o9n899SzDP9JG1BjqmARKHD3K6yP2Q7YlUzKgIMRaVxk07lCQ5%2BB3Do0Uvu8FOqchgIWTUVouASAaOyPyuQyUPeXqtTmCyLbrKCadR6wwlbLKgb0GKnRx4rTui1gvsyTx2P4JQNusMqxuk7XN5K1MQfwaLauKlQrPszMUwB5sKjxV4XQvaaK9RLyN1b5wrfZ2%2BQsXhKeaGFQVVbbBTo1ejhfyfsSwJ47Wc14Q6q%2B3cSpqvqYk%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLFTPVHPUH2%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=67b2c0466b8a8c6efc53e1a7bc0e510b0b1aabcfce378e1fc47a676864c333d9)
基本正規表現では「?, +」は「\?, \+」とすることで、拡張正規表現と同様の意味を持つようになります。
![【図を表示3】](https://ping-t-production-strg.s3.ap-northeast-1.amazonaws.com/uploads/question_image/file/11308/kkk45041.jpg?X-Amz-Expires=600&X-Amz-Date=20240727T083001Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEA0aDmFwLW5vcnRoZWFzdC0xIkcwRQIgBR0DVmIxOywNgqNNcp1VAsWgZ56Z129l1Ro%2BFuccQ8QCIQDx4f1WXM8EOZfFP33zct3mlUyf0VF4U6vMFLS9G8JyhiqxBAjm%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDYyMzQyOTgyNzI3NSIMXuR24sgpKVcYyWQgKoUEUZeggPu%2F4ByKjoTPLvCh8feCV88jweRbCrzsnw8%2F0bTTeJ57gRVRLRb4SJYiAf%2FEAMCWFqLbwLeYznJa6kfp3wRsC3FAFbm01I5TWfaalBhrx3EN9IA2Wr2FKk9J6Vr9T%2BF2MgJR6HyppufoH%2BjuSe3eK4iWsvr%2BuMB10QNKOXWqEEHc4EgYfOx4mmrzOxznuab025q8VMLLDqScTGEI5pO6N1bDVstIZiANAkI9pFx8btVUhGW9%2BURPf2pzfXgLaG2XcD5VA5PslrIocXEnKHIXKUkxm%2F14CCEdtr7B7wgLofGSiHLD4V1mgXj9ugUZFokQ0FM%2Ff%2FHNCxGDjPXEGLkOWxksfOv%2BJbpUG5en%2BGo0cJThU6hz8QzwW%2Bs9yu5svtlWMeIS6ySb7mLSDnZSZrEzPsez04F%2BclAzbZYD1mqbMnV7NqV3LIGtBFj7FfiGmUCET1QT7HmtqUMsdkmyf6%2BQpzcPobs8LdWHki6PxgWKOjlOSC0Qm2tFk1GrYujX%2BIE9ldyW%2F5GNxwjGhD3fHnqsrDbdeyQnO64IQpgXvxIiXKE9ib3ciEr5Nz7gHaGKb7CSZpWD1imLEmd5hCX2CAvY33RhiwQdkmWBVBeyi5vY3mUfOX1Soh7CXQvi8Yg%2FLIEyneoO48dNbhuZao%2BkjuSSbRRTcMLS6sLmC17jU3o9n899SzDP9JG1BjqmARKHD3K6yP2Q7YlUzKgIMRaVxk07lCQ5%2BB3Do0Uvu8FOqchgIWTUVouASAaOyPyuQyUPeXqtTmCyLbrKCadR6wwlbLKgb0GKnRx4rTui1gvsyTx2P4JQNusMqxuk7XN5K1MQfwaLauKlQrPszMUwB5sKjxV4XQvaaK9RLyN1b5wrfZ2%2BQsXhKeaGFQVVbbBTo1ejhfyfsSwJ47Wc14Q6q%2B3cSpqvqYk%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLFTPVHPUH2%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=5eee536a491ad574647ed9dde4fc082c364992a320f42edadc7def89cba22d62)
以下は主な正規表現とその使用例をまとめたものです。
![【図を表示】](https://ping-t-production-strg.s3.ap-northeast-1.amazonaws.com/uploads/question_image/file/11306/k45041.jpg?X-Amz-Expires=600&X-Amz-Date=20240727T083001Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEA0aDmFwLW5vcnRoZWFzdC0xIkcwRQIgBR0DVmIxOywNgqNNcp1VAsWgZ56Z129l1Ro%2BFuccQ8QCIQDx4f1WXM8EOZfFP33zct3mlUyf0VF4U6vMFLS9G8JyhiqxBAjm%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDYyMzQyOTgyNzI3NSIMXuR24sgpKVcYyWQgKoUEUZeggPu%2F4ByKjoTPLvCh8feCV88jweRbCrzsnw8%2F0bTTeJ57gRVRLRb4SJYiAf%2FEAMCWFqLbwLeYznJa6kfp3wRsC3FAFbm01I5TWfaalBhrx3EN9IA2Wr2FKk9J6Vr9T%2BF2MgJR6HyppufoH%2BjuSe3eK4iWsvr%2BuMB10QNKOXWqEEHc4EgYfOx4mmrzOxznuab025q8VMLLDqScTGEI5pO6N1bDVstIZiANAkI9pFx8btVUhGW9%2BURPf2pzfXgLaG2XcD5VA5PslrIocXEnKHIXKUkxm%2F14CCEdtr7B7wgLofGSiHLD4V1mgXj9ugUZFokQ0FM%2Ff%2FHNCxGDjPXEGLkOWxksfOv%2BJbpUG5en%2BGo0cJThU6hz8QzwW%2Bs9yu5svtlWMeIS6ySb7mLSDnZSZrEzPsez04F%2BclAzbZYD1mqbMnV7NqV3LIGtBFj7FfiGmUCET1QT7HmtqUMsdkmyf6%2BQpzcPobs8LdWHki6PxgWKOjlOSC0Qm2tFk1GrYujX%2BIE9ldyW%2F5GNxwjGhD3fHnqsrDbdeyQnO64IQpgXvxIiXKE9ib3ciEr5Nz7gHaGKb7CSZpWD1imLEmd5hCX2CAvY33RhiwQdkmWBVBeyi5vY3mUfOX1Soh7CXQvi8Yg%2FLIEyneoO48dNbhuZao%2BkjuSSbRRTcMLS6sLmC17jU3o9n899SzDP9JG1BjqmARKHD3K6yP2Q7YlUzKgIMRaVxk07lCQ5%2BB3Do0Uvu8FOqchgIWTUVouASAaOyPyuQyUPeXqtTmCyLbrKCadR6wwlbLKgb0GKnRx4rTui1gvsyTx2P4JQNusMqxuk7XN5K1MQfwaLauKlQrPszMUwB5sKjxV4XQvaaK9RLyN1b5wrfZ2%2BQsXhKeaGFQVVbbBTo1ejhfyfsSwJ47Wc14Q6q%2B3cSpqvqYk%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLFTPVHPUH2%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=9c00a7ef8b597b68b243fc6631620778194c0d0a6c7fe4bb459a5602fc476283)
なお、正規表現の「*」と、シェルによって解釈されるメタキャラクタの「*」では意味が異なるので注意してください。シェルは「*」を0文字以上の文字列と解釈します。
正規表現は明示的に「'」(シングルクォーテーション)や「"」(ダブルクォーテーション)の引用符で囲う事ができます。これらの引用符で囲まれた正規表現の記号は、シェルにメタキャラクタとして扱われなくなります。
正規表現を利用する主なコマンドは以下のとおりです。
・grep
ファイルや標準入力から、検索パターンにマッチする文字列を含む行を抽出するコマンド
なお、「-E」オプションを併用すると拡張正規表現が使えます(egrepコマンドと同様)。
・sed
ファイルや標準入力の内容を編集して表示するコマンド
例1)1から5までのいずれかの文字がある行を「test.txt」ファイルから抽出する場合
$ grep '[1-5]' test.txt
例2)「test.txt」ファイルの「#」から始まる行を削除して出力する場合
$ sed '/^#/d' test.txt
基本正規表現と拡張正規表現の違いに注意してください。grepコマンドは、-Eオプションを付けないと検索パターンを基本正規表現と判断しますので、上表の拡張正規表現が使えません。
実行例)
![【図を表示2】](https://ping-t-production-strg.s3.ap-northeast-1.amazonaws.com/uploads/question_image/file/11307/kk45041.jpg?X-Amz-Expires=600&X-Amz-Date=20240727T083001Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEA0aDmFwLW5vcnRoZWFzdC0xIkcwRQIgBR0DVmIxOywNgqNNcp1VAsWgZ56Z129l1Ro%2BFuccQ8QCIQDx4f1WXM8EOZfFP33zct3mlUyf0VF4U6vMFLS9G8JyhiqxBAjm%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDYyMzQyOTgyNzI3NSIMXuR24sgpKVcYyWQgKoUEUZeggPu%2F4ByKjoTPLvCh8feCV88jweRbCrzsnw8%2F0bTTeJ57gRVRLRb4SJYiAf%2FEAMCWFqLbwLeYznJa6kfp3wRsC3FAFbm01I5TWfaalBhrx3EN9IA2Wr2FKk9J6Vr9T%2BF2MgJR6HyppufoH%2BjuSe3eK4iWsvr%2BuMB10QNKOXWqEEHc4EgYfOx4mmrzOxznuab025q8VMLLDqScTGEI5pO6N1bDVstIZiANAkI9pFx8btVUhGW9%2BURPf2pzfXgLaG2XcD5VA5PslrIocXEnKHIXKUkxm%2F14CCEdtr7B7wgLofGSiHLD4V1mgXj9ugUZFokQ0FM%2Ff%2FHNCxGDjPXEGLkOWxksfOv%2BJbpUG5en%2BGo0cJThU6hz8QzwW%2Bs9yu5svtlWMeIS6ySb7mLSDnZSZrEzPsez04F%2BclAzbZYD1mqbMnV7NqV3LIGtBFj7FfiGmUCET1QT7HmtqUMsdkmyf6%2BQpzcPobs8LdWHki6PxgWKOjlOSC0Qm2tFk1GrYujX%2BIE9ldyW%2F5GNxwjGhD3fHnqsrDbdeyQnO64IQpgXvxIiXKE9ib3ciEr5Nz7gHaGKb7CSZpWD1imLEmd5hCX2CAvY33RhiwQdkmWBVBeyi5vY3mUfOX1Soh7CXQvi8Yg%2FLIEyneoO48dNbhuZao%2BkjuSSbRRTcMLS6sLmC17jU3o9n899SzDP9JG1BjqmARKHD3K6yP2Q7YlUzKgIMRaVxk07lCQ5%2BB3Do0Uvu8FOqchgIWTUVouASAaOyPyuQyUPeXqtTmCyLbrKCadR6wwlbLKgb0GKnRx4rTui1gvsyTx2P4JQNusMqxuk7XN5K1MQfwaLauKlQrPszMUwB5sKjxV4XQvaaK9RLyN1b5wrfZ2%2BQsXhKeaGFQVVbbBTo1ejhfyfsSwJ47Wc14Q6q%2B3cSpqvqYk%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLFTPVHPUH2%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=67b2c0466b8a8c6efc53e1a7bc0e510b0b1aabcfce378e1fc47a676864c333d9)
基本正規表現では「?, +」は「\?, \+」とすることで、拡張正規表現と同様の意味を持つようになります。
![【図を表示3】](https://ping-t-production-strg.s3.ap-northeast-1.amazonaws.com/uploads/question_image/file/11308/kkk45041.jpg?X-Amz-Expires=600&X-Amz-Date=20240727T083001Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEA0aDmFwLW5vcnRoZWFzdC0xIkcwRQIgBR0DVmIxOywNgqNNcp1VAsWgZ56Z129l1Ro%2BFuccQ8QCIQDx4f1WXM8EOZfFP33zct3mlUyf0VF4U6vMFLS9G8JyhiqxBAjm%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDYyMzQyOTgyNzI3NSIMXuR24sgpKVcYyWQgKoUEUZeggPu%2F4ByKjoTPLvCh8feCV88jweRbCrzsnw8%2F0bTTeJ57gRVRLRb4SJYiAf%2FEAMCWFqLbwLeYznJa6kfp3wRsC3FAFbm01I5TWfaalBhrx3EN9IA2Wr2FKk9J6Vr9T%2BF2MgJR6HyppufoH%2BjuSe3eK4iWsvr%2BuMB10QNKOXWqEEHc4EgYfOx4mmrzOxznuab025q8VMLLDqScTGEI5pO6N1bDVstIZiANAkI9pFx8btVUhGW9%2BURPf2pzfXgLaG2XcD5VA5PslrIocXEnKHIXKUkxm%2F14CCEdtr7B7wgLofGSiHLD4V1mgXj9ugUZFokQ0FM%2Ff%2FHNCxGDjPXEGLkOWxksfOv%2BJbpUG5en%2BGo0cJThU6hz8QzwW%2Bs9yu5svtlWMeIS6ySb7mLSDnZSZrEzPsez04F%2BclAzbZYD1mqbMnV7NqV3LIGtBFj7FfiGmUCET1QT7HmtqUMsdkmyf6%2BQpzcPobs8LdWHki6PxgWKOjlOSC0Qm2tFk1GrYujX%2BIE9ldyW%2F5GNxwjGhD3fHnqsrDbdeyQnO64IQpgXvxIiXKE9ib3ciEr5Nz7gHaGKb7CSZpWD1imLEmd5hCX2CAvY33RhiwQdkmWBVBeyi5vY3mUfOX1Soh7CXQvi8Yg%2FLIEyneoO48dNbhuZao%2BkjuSSbRRTcMLS6sLmC17jU3o9n899SzDP9JG1BjqmARKHD3K6yP2Q7YlUzKgIMRaVxk07lCQ5%2BB3Do0Uvu8FOqchgIWTUVouASAaOyPyuQyUPeXqtTmCyLbrKCadR6wwlbLKgb0GKnRx4rTui1gvsyTx2P4JQNusMqxuk7XN5K1MQfwaLauKlQrPszMUwB5sKjxV4XQvaaK9RLyN1b5wrfZ2%2BQsXhKeaGFQVVbbBTo1ejhfyfsSwJ47Wc14Q6q%2B3cSpqvqYk%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLFTPVHPUH2%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=5eee536a491ad574647ed9dde4fc082c364992a320f42edadc7def89cba22d62)
grep -fで使用する「検索パターン」とは
公開日 2023/12/25
以下、解説を引用。
$cat test.txt
#PINGT
PingT
#pingt
.*
$
$cat pattern
^[^#]
$
$grep -f pattern test.txt
PingT
.*
上記の内、「$cat pattern」がよくわかりません。patternの中にあらかじめ検索パターンを記述して変数のように扱っているのでしょうか。
o
ojixii
2023/12/25 20:42
「pattern」というのは grep の検索条件(検索パターン)が書かれたテキストファイルですね。
「cat pattern」では、cat コマンドにファイル pattern を指定して中身を参照しています。
ファイルの中身「^[^#]」が大事で、このファイルの中身(検索パターン)を参照して
grep -f が動作しますよ ということだと思います。
ファイル pattern の中身は検索パターンが書かれているだけですので、
中身を抜き出した「grep '^[^#]' test.txt」も同じ動作をするはずです。
コメント
この投稿に対して返信しませんか?
b blue_2015
2023/12/25 16:51
自分でも調べていますが、「pattern」とはスクリプトファイルという認識で合っていますでしょうか。