[Linux][command] テキスト処理_検索_grep, egrep, fgrep, cut

# 行の検索
## grepコマンド
~~~terminal:
$ grep [オプション] 検索パターン [ファイル名]
~~~

~~~terminal:
$ grep [オプション] [-f ファイル名] [ファイル名]
~~~

| オプション | 由来 | 説明 |
|:--|:--|:--|
| default | global regular expression print | 正規表現のパターンにマッチする行を表示する |
| `-v` | invert match | マッチしなかった行を表示する |
| `-c` | count | マッチした行の行数を表示する |
| `-n` | number | マッチした行の行番号を追加表示する |
| `-f` | file | ファイルから読み込んで検索する（1行1パターン） |
| `-i` | ignore case | 大文字・小文字を区別せずに検索する |
| `-r`<br>`-R` | recursive | サブディレクトリ内も再帰的に検索する |
| `-E` | extended | 拡張正規表現を使用する(`egrep`と同等) |
| `-F` | fixed | 正規表現ではなく**固定文字列**として検索する（`fgrep`と同等） |

## egrepコマンド
- `egrep`（Extended GREP）は、拡張正規表現（ERE: Extended Regular Expressions）を使って検索するコマンド  
- `grep -E` と同等

~~~terminal:
$ egrep [オプション] 検索パターン [ファイル名]
~~~


## fgrepコマンド
- `fgrep`（Fixed-string GREP）は、特殊な正規表現を使用せずに固定文字列を検索するコマンド  
- `grep -F` と同等

~~~terminal:
$ fgrep [オプション] 検索パターン [ファイル名]
~~~



## 使用例
### grepコマンドの場合  
"a" と "b" の間に任意の1文字を含む行を検索  
~~~terminal:
$ grep "a.b" file.txt
~~~

### egrepコマンドの場合  
"a" または "b" を含む行を検索（正規表現の `|` を使用）  
~~~terminal:
$ egrep "a|b" file.txt
~~~

### fgrepコマンドの場合  
"a.b" という文字列そのままを検索  
~~~terminal:
$ fgrep "a.b" file.txt
~~~

# 特定のフィールド・文字位置の検索
## cutコマンド

~~~terminal
# cut [オプション] [ファイル名]
~~~

| オプション | 由来 | 説明 |
|:--|:--|:--|
| default | cut | デフォルトでは何も出力されない |
| `-c LIST` | characters | 指定した文字位置の文字を抽出する |
|  |  | 例：`cut -c 3-7 file.txt`（3〜7文字目を抽出） |
| `-f LIST` | fields | 指定したフィールド番号を抽出する（デフォルト区切りはタブ） |
|  |  | 例：`cut -f 1,3 file.txt`（1列目と3列目を抽出） |
| `-d CHAR` | delimiter | 区切り文字を指定する（`-f` と組み合わせて使用） |
|  |  | 例：`cut -d "," -f 2 file.csv`（CSVの2列目を抽出） |





# Ping-t
grep
- [3497_grep](https://mondai.ping-t.com/question_subjects/31/question_sessions/31913990/progressing_questions/489024877)
- [3498_grep -v](https://mondai.ping-t.com/question_subjects/31/question_sessions/32244301/progressing_questions/494010588)
- [3499_grep -c](https://mondai.ping-t.com/question_subjects/31/question_sessions/31994687/progressing_questions/490207935)
- [3500_grep -i](https://mondai.ping-t.com/question_subjects/31/question_sessions/32368296/progressing_questions/495929823)
- [3501_grep -n](https://mondai.ping-t.com/question_subjects/31/question_sessions/31943721/progressing_questions/489464086)
- [3571_grep -f](https://mondai.ping-t.com/question_subjects/31/question_sessions/31943721/progressing_questions/489464085)
- [3576_grep -v](https://mondai.ping-t.com/question_subjects/31/question_sessions/31943721/progressing_questions/489464087)
- [3577_grep](https://mondai.ping-t.com/question_subjects/31/question_sessions/31916304/progressing_questions/489057821)
- [3648_grep -Ev, egrep -v](https://mondai.ping-t.com/question_subjects/31/question_sessions/32018863/progressing_questions/490569316)

egrep
- [3578_egrep](https://mondai.ping-t.com/question_subjects/31/question_sessions/31916304/progressing_questions/489057820)
- [3648_grep -Ev, egrep -v](https://mondai.ping-t.com/question_subjects/31/question_sessions/32018863/progressing_questions/490569316)

fgrep
- [3503_grep -F, grep '\\.\\*', fgrep](https://mondai.ping-t.com/question_subjects/31/question_sessions/32581786/progressing_questions/499228201?result=true)

cut
- [3094_cut](https://mondai.ping-t.com/question_subjects/31/question_sessions/31969785/progressing_questions/489837019)
- [3095_cut -d -f ](https://mondai.ping-t.com/question_subjects/31/question_sessions/31943721/progressing_questions/489464100)
- [3271_cut -c](https://mondai.ping-t.com/question_subjects/31/question_sessions/32400273/progressing_questions/496436012)