「業務用エアコンのエラーコード」はこちら

ファイル内の文字列・行抽出

ファイル内の文字列・行抽出

特定文字から始まる文字列を抽出する

長文のファイルから特定の文字列を抽出する場合、grepコマンドを使用します。
grepコマンドの引数に、抽出したい文字列と、ファイルを指定し、更に追加条件として、特定の文字列から始まる抽出を行うため、「^」(キャロット)を付けることで、その文字列から始まるデータを抽出することができます。

[root@Lion ~]# grep -i "ja" country_list.txt
↑オプション「-i」で大文字、小文字を区別せず、「ja」を含む文字列を抽出
Japan
Azerbaijan
Jamaica
Libyan Arab Jamahiriya
↑「ja」を含む文字列データが複数抽出されます。

[root@Lion ~]# grep -i "^ja" country_list.txt
↑オプション「-i」で大文字、小文字を区別せず、「ja」から始まる文字列を抽出
Japan
Jamaica
↑「ja」から始まる文字列データが抽出されます。

特定文字で終わる文字列を抽出する

特定の文字列で終わる抽出を行うため、「$」(ダラー)を付けることで、その文字列で終わるデータを抽出することができます。

[root@Lion ~]# grep -i "en" country_list.txt
↑オプション「-i」で大文字、小文字を区別せず、「en」を含む文字列を抽出します。
Argentina
Armenia
Benin
Central African Republic
Denmark
Grenada
Kenya
Liechtenstein
Montenegro
Saint Vincent and the Grenadines
Senegal
Slovenia
Sweden
Turkmenistan
Venezuela
Yemen
↑「en」を含む文字列データが複数抽出されます。

[root@Lion ~]# grep -i "en$" country_list.txt
↑オプション「-i」で大文字、小文字を区別せず、「en」で終わる文字列を抽出
Sweden
Yemen
↑「en」で終わる文字列データが抽出されます

特定文字列を行番号含めて表示する

grepコマンドを使用すれば、ファイル内の特定の文字列を検索して抽出できます。
しかし、その文字列がファイル内のどの行にあるかまではわかりません。
検索文字列を行番号と共に抽出したい場合は、grepコマンドにオプション「-n」を付けて実行します。

[root@Lion ~]# grep -in "en" country_list.txt ←行番号を付けて文字列を表示します。
7:Argentina
8:Armenia
19:Benin
33:Central African Republic
49:Denmark
70:Grenada
90:Kenya
100:Liechtenstein
116:Montenegro
148:Saint Vincent and the Grenadines
153:Senegal
159:Slovenia
168:Sweden
180:Turkmenistan
191:Venezuela
193:Yemen
↑「en」を含む文字列が行番号と共に表示されます。

特定の文字列が含まれない行を抽出する

ファイルから特定の文字列を排除して、表示させるにはgrepコマンドに「-v」オプションを付けて実行します。

[root@Lion ~]# more country_list.txt ←ファイル内容を表示します。
Japan
Afghanistan
Algeria
Andorra
Angola
Antigua and Barbuda
Argentina
Armenia
Australia
Austria
[root@Lion ~]# grep -iv "an" country_list.txt ←「an」を含む行を排除して表示
Algeria
Argentina
Armenia
Australia
Austria
Bahamas
Bahrain
Barbados
Belarus
Belgium
Belize
Benin
↑ anを含む行を含まずに結果表示されます。

特定の文字列が含まれている行数を表示

grepコマンドに「-c」オプションを使用することで、特定文字列を含む行数が表示されます

[root@Lion ~]# grep -i "en" country_list.txt ←enを含む行を表示
Argentina
Armenia
Benin
Central African Republic
Denmark
Grenada
Kenya
Liechtenstein
Montenegro
Saint Vincent and the Grenadines
Senegal
Slovenia
Sweden
Turkmenistan
Venezuela
Yemen
enを含む行数を表示
[root@Lion ~]# grep -ic "en" country_list.txt ←enを含む行数が何行あるのか表示
16    ←16行ある
タイトルとURLをコピーしました