ファイルからの必要情報の抽出に役立つコマンドについて解説します。
目次
1.grepコマンド
grepコマンドは、指定した文字に一致する部分のみを抽出できるコマンドです。
下記の例では、「open」のコマンドに一致する箇所のみを表示させています。

正規表現も使うことができます。
下記の例では、行の先頭が「0〜9」で始まる箇所のみを表示させています。

2.cutコマンド
cutコマンドは、指定した文字列で区切ることができるコマンドです。
下記の例では、「/」の文字列で区切り、区切った箇所の「1番目」を表示させます。
-dオプション・・・区切る文字列を指定
-f オプション・・・区切り位置の表示させる位置を指定

3.trコマンド
trコマンドは、指定した文字列を置換できるコマンドです。
下記の例では、「tcp」を「udp」に置換しています。

4.sedコマンド
sedコマンドは、文字列の置換が行えるコマンドです。正規表現も使うことができます。
下記の例では、「tcp」を「udp」に置換しています。

5.awkコマンド
awkコマンドは、指定した文字列で抽出できるコマンドです。
下記の例では、「/」の文字列で区切り、区切った箇所の「1番目」を表示させます。

6.コマンドの組み合わせ
コマンドを組み合わせることで、複雑な抽出をすることも可能です。
下記の例では、nmapの結果から、オープンポートを「,」区切りで抽出できます。
grep ^[0-9]・・・先頭が「0〜9」で始まる箇所のみ表示
kali@kali:~/hackTheBox/Legacy$ cat ports | grep ^[0-9]
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3389/tcp closed ms-wbt-server
kali@kali:~/hackTheBox/Legacy$
cut -d ‘/’ -f 1・・・「/」で区切り、一番目を表示
kali@kali:~/hackTheBox/Legacy$ cat ports | grep ^[0-9] | cut -d '/' -f 1
139
445
3389
kali@kali:~/hackTheBox/Legacy$
tr ‘\n’ ‘,’・・・「改行」を「,」に置換
kali@kali:~/hackTheBox/Legacy$ cat ports | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ','
139,445,3389,
sed s/,$//・・・最後の「,」をブランクにする
kali@kali:~/hackTheBox/Legacy$ cat ports | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//
139,445,3389
