助け合いフォーラム
LinuC Lv1-101(Ver10.0)
問題ID : 14861
問題を開く
以下の「test.txt」ファイルに対して、「grep '1234.' test.txt」コマンドを実行した時に出力される行はどれか。(全て選択)
$ cat test.txt
123
1223
1233
12344
123445
0123499
$ cat test.txt
123
1223
1233
12344
123445
0123499
正解
12344
123445
0123499
解説
grepコマンドはファイルや標準入力から、正規表現のパターンにマッチする文字列を含む行を抽出します。
grepコマンドの書式は以下のとおりです。
grep [オプション] 検索パターン [ファイル名]
以下は主な正規表現とその使用例をまとめたものです。
![<img src="/mondai3/img/jpg/k45041.jpg">](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=20240727T031914Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAcaDmFwLW5vcnRoZWFzdC0xIkgwRgIhAJ7mkC5JfvSdLioYGKPvL4LNMvPwvSDw5e6Trr2wGIteAiEA3PTHM4A2nrwe%2FsKtasucFN4M2bX8SdlW8y7dOzQ7puAqsQQI4P%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2MjM0Mjk4MjcyNzUiDCdr3QPeyekWGLgFlSqFBKpCSz3SbveHUOGK2zeHLuVO2cItM42HqGJgxnLQS8wor%2BLtL3EVqtpbI8I26UG8TqsQ8ROdervHWNtEF2b0YDJeJ9OA1lTqIYRGfXT%2F0vga3BjTreZymRtCJxCBhuiBlLx6LQiOAsHh%2FqccRNGloBAcTGOzTHzFySnilRiwHeUfF7A5ENm3WS77BOMgNIZfQ%2BqOl8DiCoR%2F4pFqTREpbE2newnXyJLC2naNMvWg1VqNXBmsUkeGPKModBV7IXhjp1KuIo9uTCVLHTNNGeQ4QqJXaMCzwY2TCu7f5A%2B2AI9RzVu2xa8dHndhkOWtL3p4ayYMuYoNaeoGWRjuvKAfvdYlpLmHd%2BI8qb%2FC3r%2B5QEGEwE6pzDvX9RBseNeDx8xV0oY3WH47HS2TwZrFSsSIXfbkWRUtqnwGPsh6HHGcZ%2BttEmkB0id8owV%2F%2BkDcKcBkVSnEZ14UIczdWOipIytNI88HHsMahQhW0FL%2FV8DANDrF%2B0iLCjVNlTQpqDd0TBecXiGaUeXwyxJJtZBty4IzeiiGodEmdZvMXRG5J8BWMG5rjxSe2gTe%2BZWtFkw9B0DCFxZM%2Bz2LeV%2BDRXD0Ztn4Rjqo4pKn1IJTo2XPksV3q%2FS25FfXPCV%2BgYiqfEWMhZEBnMMp%2FlJQQ9O5lQWu%2FO3Rpbv0WmlwCYOqfaxafD26T5iJNCIiFkcw0N6QtQY6pQHbqvxSzEhMcFvQGQ8HD8a0AHu3DdZP%2FFuA131Jli24oxUqgn74dE0s2tjZNl10mAmXJ5spI8Xq5uL5E8yYKCD3dkwfq5sjHkAWdViw1VYA64tvvmrYdURs3iermXNq44RnmgovPmGbpOgB4SNjrt6dNp7tl00mC8JEZu%2BNsrX97GRXuPviHi2WTlfk2%2FmfdOlDwvz8NsaG50T63jElW1sev%2BBZ0UU%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLF74BLTX7P%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=72161c197d8edf4f8dfacc4f9e9b3486416236c807585a35bdceaa4f3bda6dbb)
上表より、「1234.」は「文字列1234の後に任意の1文字」を意味します。
このパターンの文字列を含む行は「12344」「123445」「0123499」の3行です。
したがって正解は
・12344
・123445
・0123499
です。
以下は実行例です。
$ grep '1234.' test.txt
12344
123445
0123499
その他の選択肢は「grep '1234.' test.txt」を実行した際に表示されませんので、誤りです。
grepコマンドの書式は以下のとおりです。
grep [オプション] 検索パターン [ファイル名]
以下は主な正規表現とその使用例をまとめたものです。
![<img src="/mondai3/img/jpg/k45041.jpg">](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=20240727T031914Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAcaDmFwLW5vcnRoZWFzdC0xIkgwRgIhAJ7mkC5JfvSdLioYGKPvL4LNMvPwvSDw5e6Trr2wGIteAiEA3PTHM4A2nrwe%2FsKtasucFN4M2bX8SdlW8y7dOzQ7puAqsQQI4P%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2MjM0Mjk4MjcyNzUiDCdr3QPeyekWGLgFlSqFBKpCSz3SbveHUOGK2zeHLuVO2cItM42HqGJgxnLQS8wor%2BLtL3EVqtpbI8I26UG8TqsQ8ROdervHWNtEF2b0YDJeJ9OA1lTqIYRGfXT%2F0vga3BjTreZymRtCJxCBhuiBlLx6LQiOAsHh%2FqccRNGloBAcTGOzTHzFySnilRiwHeUfF7A5ENm3WS77BOMgNIZfQ%2BqOl8DiCoR%2F4pFqTREpbE2newnXyJLC2naNMvWg1VqNXBmsUkeGPKModBV7IXhjp1KuIo9uTCVLHTNNGeQ4QqJXaMCzwY2TCu7f5A%2B2AI9RzVu2xa8dHndhkOWtL3p4ayYMuYoNaeoGWRjuvKAfvdYlpLmHd%2BI8qb%2FC3r%2B5QEGEwE6pzDvX9RBseNeDx8xV0oY3WH47HS2TwZrFSsSIXfbkWRUtqnwGPsh6HHGcZ%2BttEmkB0id8owV%2F%2BkDcKcBkVSnEZ14UIczdWOipIytNI88HHsMahQhW0FL%2FV8DANDrF%2B0iLCjVNlTQpqDd0TBecXiGaUeXwyxJJtZBty4IzeiiGodEmdZvMXRG5J8BWMG5rjxSe2gTe%2BZWtFkw9B0DCFxZM%2Bz2LeV%2BDRXD0Ztn4Rjqo4pKn1IJTo2XPksV3q%2FS25FfXPCV%2BgYiqfEWMhZEBnMMp%2FlJQQ9O5lQWu%2FO3Rpbv0WmlwCYOqfaxafD26T5iJNCIiFkcw0N6QtQY6pQHbqvxSzEhMcFvQGQ8HD8a0AHu3DdZP%2FFuA131Jli24oxUqgn74dE0s2tjZNl10mAmXJ5spI8Xq5uL5E8yYKCD3dkwfq5sjHkAWdViw1VYA64tvvmrYdURs3iermXNq44RnmgovPmGbpOgB4SNjrt6dNp7tl00mC8JEZu%2BNsrX97GRXuPviHi2WTlfk2%2FmfdOlDwvz8NsaG50T63jElW1sev%2BBZ0UU%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLF74BLTX7P%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=72161c197d8edf4f8dfacc4f9e9b3486416236c807585a35bdceaa4f3bda6dbb)
上表より、「1234.」は「文字列1234の後に任意の1文字」を意味します。
このパターンの文字列を含む行は「12344」「123445」「0123499」の3行です。
したがって正解は
・12344
・123445
・0123499
です。
以下は実行例です。
$ grep '1234.' test.txt
12344
123445
0123499
その他の選択肢は「grep '1234.' test.txt」を実行した際に表示されませんので、誤りです。
参考
正規表現とは、文字列の特定のパターンを認識する為に使用する表現方法です。文字列の検索や置換などを行う際に利用します。正規表現には基本正規表現(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=20240727T031914Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAcaDmFwLW5vcnRoZWFzdC0xIkgwRgIhAJ7mkC5JfvSdLioYGKPvL4LNMvPwvSDw5e6Trr2wGIteAiEA3PTHM4A2nrwe%2FsKtasucFN4M2bX8SdlW8y7dOzQ7puAqsQQI4P%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2MjM0Mjk4MjcyNzUiDCdr3QPeyekWGLgFlSqFBKpCSz3SbveHUOGK2zeHLuVO2cItM42HqGJgxnLQS8wor%2BLtL3EVqtpbI8I26UG8TqsQ8ROdervHWNtEF2b0YDJeJ9OA1lTqIYRGfXT%2F0vga3BjTreZymRtCJxCBhuiBlLx6LQiOAsHh%2FqccRNGloBAcTGOzTHzFySnilRiwHeUfF7A5ENm3WS77BOMgNIZfQ%2BqOl8DiCoR%2F4pFqTREpbE2newnXyJLC2naNMvWg1VqNXBmsUkeGPKModBV7IXhjp1KuIo9uTCVLHTNNGeQ4QqJXaMCzwY2TCu7f5A%2B2AI9RzVu2xa8dHndhkOWtL3p4ayYMuYoNaeoGWRjuvKAfvdYlpLmHd%2BI8qb%2FC3r%2B5QEGEwE6pzDvX9RBseNeDx8xV0oY3WH47HS2TwZrFSsSIXfbkWRUtqnwGPsh6HHGcZ%2BttEmkB0id8owV%2F%2BkDcKcBkVSnEZ14UIczdWOipIytNI88HHsMahQhW0FL%2FV8DANDrF%2B0iLCjVNlTQpqDd0TBecXiGaUeXwyxJJtZBty4IzeiiGodEmdZvMXRG5J8BWMG5rjxSe2gTe%2BZWtFkw9B0DCFxZM%2Bz2LeV%2BDRXD0Ztn4Rjqo4pKn1IJTo2XPksV3q%2FS25FfXPCV%2BgYiqfEWMhZEBnMMp%2FlJQQ9O5lQWu%2FO3Rpbv0WmlwCYOqfaxafD26T5iJNCIiFkcw0N6QtQY6pQHbqvxSzEhMcFvQGQ8HD8a0AHu3DdZP%2FFuA131Jli24oxUqgn74dE0s2tjZNl10mAmXJ5spI8Xq5uL5E8yYKCD3dkwfq5sjHkAWdViw1VYA64tvvmrYdURs3iermXNq44RnmgovPmGbpOgB4SNjrt6dNp7tl00mC8JEZu%2BNsrX97GRXuPviHi2WTlfk2%2FmfdOlDwvz8NsaG50T63jElW1sev%2BBZ0UU%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLF74BLTX7P%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=72161c197d8edf4f8dfacc4f9e9b3486416236c807585a35bdceaa4f3bda6dbb)
なお、正規表現の「*」と、シェルによって解釈されるメタキャラクタの「*」では意味が異なるので注意してください。シェルは「*」を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=20240727T031914Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAcaDmFwLW5vcnRoZWFzdC0xIkgwRgIhAJ7mkC5JfvSdLioYGKPvL4LNMvPwvSDw5e6Trr2wGIteAiEA3PTHM4A2nrwe%2FsKtasucFN4M2bX8SdlW8y7dOzQ7puAqsQQI4P%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2MjM0Mjk4MjcyNzUiDCdr3QPeyekWGLgFlSqFBKpCSz3SbveHUOGK2zeHLuVO2cItM42HqGJgxnLQS8wor%2BLtL3EVqtpbI8I26UG8TqsQ8ROdervHWNtEF2b0YDJeJ9OA1lTqIYRGfXT%2F0vga3BjTreZymRtCJxCBhuiBlLx6LQiOAsHh%2FqccRNGloBAcTGOzTHzFySnilRiwHeUfF7A5ENm3WS77BOMgNIZfQ%2BqOl8DiCoR%2F4pFqTREpbE2newnXyJLC2naNMvWg1VqNXBmsUkeGPKModBV7IXhjp1KuIo9uTCVLHTNNGeQ4QqJXaMCzwY2TCu7f5A%2B2AI9RzVu2xa8dHndhkOWtL3p4ayYMuYoNaeoGWRjuvKAfvdYlpLmHd%2BI8qb%2FC3r%2B5QEGEwE6pzDvX9RBseNeDx8xV0oY3WH47HS2TwZrFSsSIXfbkWRUtqnwGPsh6HHGcZ%2BttEmkB0id8owV%2F%2BkDcKcBkVSnEZ14UIczdWOipIytNI88HHsMahQhW0FL%2FV8DANDrF%2B0iLCjVNlTQpqDd0TBecXiGaUeXwyxJJtZBty4IzeiiGodEmdZvMXRG5J8BWMG5rjxSe2gTe%2BZWtFkw9B0DCFxZM%2Bz2LeV%2BDRXD0Ztn4Rjqo4pKn1IJTo2XPksV3q%2FS25FfXPCV%2BgYiqfEWMhZEBnMMp%2FlJQQ9O5lQWu%2FO3Rpbv0WmlwCYOqfaxafD26T5iJNCIiFkcw0N6QtQY6pQHbqvxSzEhMcFvQGQ8HD8a0AHu3DdZP%2FFuA131Jli24oxUqgn74dE0s2tjZNl10mAmXJ5spI8Xq5uL5E8yYKCD3dkwfq5sjHkAWdViw1VYA64tvvmrYdURs3iermXNq44RnmgovPmGbpOgB4SNjrt6dNp7tl00mC8JEZu%2BNsrX97GRXuPviHi2WTlfk2%2FmfdOlDwvz8NsaG50T63jElW1sev%2BBZ0UU%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLF74BLTX7P%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=bf4d1abe4a2620bb6a2ba5a1d09bf50ff82ccece517c2093f69cfb2fc699f1e3)
基本正規表現では「?, +」は「\?, \+」とすることで、拡張正規表現と同様の意味を持つようになります。
![【図を表示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=20240727T031914Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAcaDmFwLW5vcnRoZWFzdC0xIkgwRgIhAJ7mkC5JfvSdLioYGKPvL4LNMvPwvSDw5e6Trr2wGIteAiEA3PTHM4A2nrwe%2FsKtasucFN4M2bX8SdlW8y7dOzQ7puAqsQQI4P%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2MjM0Mjk4MjcyNzUiDCdr3QPeyekWGLgFlSqFBKpCSz3SbveHUOGK2zeHLuVO2cItM42HqGJgxnLQS8wor%2BLtL3EVqtpbI8I26UG8TqsQ8ROdervHWNtEF2b0YDJeJ9OA1lTqIYRGfXT%2F0vga3BjTreZymRtCJxCBhuiBlLx6LQiOAsHh%2FqccRNGloBAcTGOzTHzFySnilRiwHeUfF7A5ENm3WS77BOMgNIZfQ%2BqOl8DiCoR%2F4pFqTREpbE2newnXyJLC2naNMvWg1VqNXBmsUkeGPKModBV7IXhjp1KuIo9uTCVLHTNNGeQ4QqJXaMCzwY2TCu7f5A%2B2AI9RzVu2xa8dHndhkOWtL3p4ayYMuYoNaeoGWRjuvKAfvdYlpLmHd%2BI8qb%2FC3r%2B5QEGEwE6pzDvX9RBseNeDx8xV0oY3WH47HS2TwZrFSsSIXfbkWRUtqnwGPsh6HHGcZ%2BttEmkB0id8owV%2F%2BkDcKcBkVSnEZ14UIczdWOipIytNI88HHsMahQhW0FL%2FV8DANDrF%2B0iLCjVNlTQpqDd0TBecXiGaUeXwyxJJtZBty4IzeiiGodEmdZvMXRG5J8BWMG5rjxSe2gTe%2BZWtFkw9B0DCFxZM%2Bz2LeV%2BDRXD0Ztn4Rjqo4pKn1IJTo2XPksV3q%2FS25FfXPCV%2BgYiqfEWMhZEBnMMp%2FlJQQ9O5lQWu%2FO3Rpbv0WmlwCYOqfaxafD26T5iJNCIiFkcw0N6QtQY6pQHbqvxSzEhMcFvQGQ8HD8a0AHu3DdZP%2FFuA131Jli24oxUqgn74dE0s2tjZNl10mAmXJ5spI8Xq5uL5E8yYKCD3dkwfq5sjHkAWdViw1VYA64tvvmrYdURs3iermXNq44RnmgovPmGbpOgB4SNjrt6dNp7tl00mC8JEZu%2BNsrX97GRXuPviHi2WTlfk2%2FmfdOlDwvz8NsaG50T63jElW1sev%2BBZ0UU%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLF74BLTX7P%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=b67d735f4afae2944146982d6037eadf11f622280782341014f38d57847e73de)
以下は主な正規表現とその使用例をまとめたものです。
![【図を表示】](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=20240727T031914Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAcaDmFwLW5vcnRoZWFzdC0xIkgwRgIhAJ7mkC5JfvSdLioYGKPvL4LNMvPwvSDw5e6Trr2wGIteAiEA3PTHM4A2nrwe%2FsKtasucFN4M2bX8SdlW8y7dOzQ7puAqsQQI4P%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2MjM0Mjk4MjcyNzUiDCdr3QPeyekWGLgFlSqFBKpCSz3SbveHUOGK2zeHLuVO2cItM42HqGJgxnLQS8wor%2BLtL3EVqtpbI8I26UG8TqsQ8ROdervHWNtEF2b0YDJeJ9OA1lTqIYRGfXT%2F0vga3BjTreZymRtCJxCBhuiBlLx6LQiOAsHh%2FqccRNGloBAcTGOzTHzFySnilRiwHeUfF7A5ENm3WS77BOMgNIZfQ%2BqOl8DiCoR%2F4pFqTREpbE2newnXyJLC2naNMvWg1VqNXBmsUkeGPKModBV7IXhjp1KuIo9uTCVLHTNNGeQ4QqJXaMCzwY2TCu7f5A%2B2AI9RzVu2xa8dHndhkOWtL3p4ayYMuYoNaeoGWRjuvKAfvdYlpLmHd%2BI8qb%2FC3r%2B5QEGEwE6pzDvX9RBseNeDx8xV0oY3WH47HS2TwZrFSsSIXfbkWRUtqnwGPsh6HHGcZ%2BttEmkB0id8owV%2F%2BkDcKcBkVSnEZ14UIczdWOipIytNI88HHsMahQhW0FL%2FV8DANDrF%2B0iLCjVNlTQpqDd0TBecXiGaUeXwyxJJtZBty4IzeiiGodEmdZvMXRG5J8BWMG5rjxSe2gTe%2BZWtFkw9B0DCFxZM%2Bz2LeV%2BDRXD0Ztn4Rjqo4pKn1IJTo2XPksV3q%2FS25FfXPCV%2BgYiqfEWMhZEBnMMp%2FlJQQ9O5lQWu%2FO3Rpbv0WmlwCYOqfaxafD26T5iJNCIiFkcw0N6QtQY6pQHbqvxSzEhMcFvQGQ8HD8a0AHu3DdZP%2FFuA131Jli24oxUqgn74dE0s2tjZNl10mAmXJ5spI8Xq5uL5E8yYKCD3dkwfq5sjHkAWdViw1VYA64tvvmrYdURs3iermXNq44RnmgovPmGbpOgB4SNjrt6dNp7tl00mC8JEZu%2BNsrX97GRXuPviHi2WTlfk2%2FmfdOlDwvz8NsaG50T63jElW1sev%2BBZ0UU%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLF74BLTX7P%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=72161c197d8edf4f8dfacc4f9e9b3486416236c807585a35bdceaa4f3bda6dbb)
なお、正規表現の「*」と、シェルによって解釈されるメタキャラクタの「*」では意味が異なるので注意してください。シェルは「*」を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=20240727T031914Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAcaDmFwLW5vcnRoZWFzdC0xIkgwRgIhAJ7mkC5JfvSdLioYGKPvL4LNMvPwvSDw5e6Trr2wGIteAiEA3PTHM4A2nrwe%2FsKtasucFN4M2bX8SdlW8y7dOzQ7puAqsQQI4P%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2MjM0Mjk4MjcyNzUiDCdr3QPeyekWGLgFlSqFBKpCSz3SbveHUOGK2zeHLuVO2cItM42HqGJgxnLQS8wor%2BLtL3EVqtpbI8I26UG8TqsQ8ROdervHWNtEF2b0YDJeJ9OA1lTqIYRGfXT%2F0vga3BjTreZymRtCJxCBhuiBlLx6LQiOAsHh%2FqccRNGloBAcTGOzTHzFySnilRiwHeUfF7A5ENm3WS77BOMgNIZfQ%2BqOl8DiCoR%2F4pFqTREpbE2newnXyJLC2naNMvWg1VqNXBmsUkeGPKModBV7IXhjp1KuIo9uTCVLHTNNGeQ4QqJXaMCzwY2TCu7f5A%2B2AI9RzVu2xa8dHndhkOWtL3p4ayYMuYoNaeoGWRjuvKAfvdYlpLmHd%2BI8qb%2FC3r%2B5QEGEwE6pzDvX9RBseNeDx8xV0oY3WH47HS2TwZrFSsSIXfbkWRUtqnwGPsh6HHGcZ%2BttEmkB0id8owV%2F%2BkDcKcBkVSnEZ14UIczdWOipIytNI88HHsMahQhW0FL%2FV8DANDrF%2B0iLCjVNlTQpqDd0TBecXiGaUeXwyxJJtZBty4IzeiiGodEmdZvMXRG5J8BWMG5rjxSe2gTe%2BZWtFkw9B0DCFxZM%2Bz2LeV%2BDRXD0Ztn4Rjqo4pKn1IJTo2XPksV3q%2FS25FfXPCV%2BgYiqfEWMhZEBnMMp%2FlJQQ9O5lQWu%2FO3Rpbv0WmlwCYOqfaxafD26T5iJNCIiFkcw0N6QtQY6pQHbqvxSzEhMcFvQGQ8HD8a0AHu3DdZP%2FFuA131Jli24oxUqgn74dE0s2tjZNl10mAmXJ5spI8Xq5uL5E8yYKCD3dkwfq5sjHkAWdViw1VYA64tvvmrYdURs3iermXNq44RnmgovPmGbpOgB4SNjrt6dNp7tl00mC8JEZu%2BNsrX97GRXuPviHi2WTlfk2%2FmfdOlDwvz8NsaG50T63jElW1sev%2BBZ0UU%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLF74BLTX7P%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=bf4d1abe4a2620bb6a2ba5a1d09bf50ff82ccece517c2093f69cfb2fc699f1e3)
基本正規表現では「?, +」は「\?, \+」とすることで、拡張正規表現と同様の意味を持つようになります。
![【図を表示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=20240727T031914Z&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAcaDmFwLW5vcnRoZWFzdC0xIkgwRgIhAJ7mkC5JfvSdLioYGKPvL4LNMvPwvSDw5e6Trr2wGIteAiEA3PTHM4A2nrwe%2FsKtasucFN4M2bX8SdlW8y7dOzQ7puAqsQQI4P%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2MjM0Mjk4MjcyNzUiDCdr3QPeyekWGLgFlSqFBKpCSz3SbveHUOGK2zeHLuVO2cItM42HqGJgxnLQS8wor%2BLtL3EVqtpbI8I26UG8TqsQ8ROdervHWNtEF2b0YDJeJ9OA1lTqIYRGfXT%2F0vga3BjTreZymRtCJxCBhuiBlLx6LQiOAsHh%2FqccRNGloBAcTGOzTHzFySnilRiwHeUfF7A5ENm3WS77BOMgNIZfQ%2BqOl8DiCoR%2F4pFqTREpbE2newnXyJLC2naNMvWg1VqNXBmsUkeGPKModBV7IXhjp1KuIo9uTCVLHTNNGeQ4QqJXaMCzwY2TCu7f5A%2B2AI9RzVu2xa8dHndhkOWtL3p4ayYMuYoNaeoGWRjuvKAfvdYlpLmHd%2BI8qb%2FC3r%2B5QEGEwE6pzDvX9RBseNeDx8xV0oY3WH47HS2TwZrFSsSIXfbkWRUtqnwGPsh6HHGcZ%2BttEmkB0id8owV%2F%2BkDcKcBkVSnEZ14UIczdWOipIytNI88HHsMahQhW0FL%2FV8DANDrF%2B0iLCjVNlTQpqDd0TBecXiGaUeXwyxJJtZBty4IzeiiGodEmdZvMXRG5J8BWMG5rjxSe2gTe%2BZWtFkw9B0DCFxZM%2Bz2LeV%2BDRXD0Ztn4Rjqo4pKn1IJTo2XPksV3q%2FS25FfXPCV%2BgYiqfEWMhZEBnMMp%2FlJQQ9O5lQWu%2FO3Rpbv0WmlwCYOqfaxafD26T5iJNCIiFkcw0N6QtQY6pQHbqvxSzEhMcFvQGQ8HD8a0AHu3DdZP%2FFuA131Jli24oxUqgn74dE0s2tjZNl10mAmXJ5spI8Xq5uL5E8yYKCD3dkwfq5sjHkAWdViw1VYA64tvvmrYdURs3iermXNq44RnmgovPmGbpOgB4SNjrt6dNp7tl00mC8JEZu%2BNsrX97GRXuPviHi2WTlfk2%2FmfdOlDwvz8NsaG50T63jElW1sev%2BBZ0UU%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAZCJ2QHLF74BLTX7P%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=b67d735f4afae2944146982d6037eadf11f622280782341014f38d57847e73de)
不思議です。
y
yaz4ki
公開日 2022/09/09
「1234.」は「文字列1234の後に任意の1文字」を意味します。
このパターンの文字列を含む行は「12344」「123445」「0123499」の3行です。
なぜ「0123499」が含まれるのですか?
仮に「012349」であれば、納得がいくのですが……不思議です。
2022/09/09 15:49
grep '1234.'は
「『1234』と、その後に1文字」が含まれている文字列を検索させます。
そのため、前後に何文字入っていたとしても「『1234』と、その後に1文字」の条件に該当すれば
検索合致となります。
例にしていただいている『012349』の「0」の立ち位置と、回答『0123499』の末尾「9」は
文字列の構成としては同じ立ち位置です。
コメント
この投稿に対して返信しませんか?
y yaz4ki
2022/09/09 17:11
ありがとうございます!理解できてスッキリしました!