![見出し画像](https://assets.st-note.com/production/uploads/images/41617661/rectangle_large_type_2_2d6d7cbbd18fb717e04d46d9bf7ac4fc.png?width=1200)
役に立つLinuxコマンド2【Shell】
実務で利用している便利コマンドを紹介
ファイルの各行にいくつ区切り(カラム)があるかを調べるコマンド
調査対象ファイル(hoge.csv)の中身
調査したいファイルの中身は以下のようなファイルです。
[ec2 ~]$ cat hoge.csv
name,age,gender,tel,mail
山田,25,女,080-1111-2222,yamada@mail
佐藤,30,男,080-1111-2223,sato@mail
田中,35,女,080-1111-2224,tanaka@mail
山本,40,男,080-1111-2225,yamamoto@mail
(おなじようなデータが以後数万行ある)
調査コマンド
1.各行のカンマの数を数え、ファイルに出力
[ec2 ~]$ awk '{print gsub(/\,/,"")}' hoge.csv > karamu.txt
2.行とカラム数を表示
[ec2 ~]$ cat -n karamu.txt |head -10
1 5
2 5
3 5
4 5
5 5
6 5
7 5
8 5
9 5
10 5
# 行数が違うところだけみたい場合は、以下のようなコマンド
[ec2 ~]$ cat -n karamu.txt |grep -v 5
212339 6
212340 6
212341 6
212342 6
212352 6
212353 6
212354 6
212355 6
212356 6
行数が少ない場合は、以下のコマンドで一括で出力できます。
[ec2 ~]$ awk '{print gsub(/\,/,"")}' hoge.csv | cat -n
1 5
2 5
3 5
4 5
5 5
カンマ区切りでなく、タブ区切りの場合は以下
[ec2 ~]$ awk '{print gsub(/\t/,"")}' fuge.tsv | cat -n
1 7
2 7
3 8
4 7
5 7
このあたりのコマンド(特にawkコマンド)は、
使いこなせるようになるととても便利です。
サーバ名からIPを検索する
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'sort_by(Reservations[*].Instances[*].{Name:Tags[?Key==`Name`].[Value][0][0],ID:InstanceId,IP:PrivateIpAddress,Type:InstanceType}[0],&Name)' --output table "Name=tag-value,Values=*prd-actproc*"
結果として以下のようにでます
--------------------------------------------------------------------------------
| DescribeInstances |
+----------------------+----------------+-------------------------+------------+
| ID | IP | Name | Type |
+----------------------+----------------+-------------------------+------------+
| i-0b09ee819275d3333 | xxx.xx.xx.xx | hogehoge-server | r4.large |
| i-0fd509551a6074444 | xxx.xx.xx.yy | fugafuga-server | m4.large |
| i-0c777dc2192435555 | xxx.xx.xx.zz | hogefuga-server | r5.xlarge |
他にも便利なコマンドを知っているという方は、
コメントで教えてください。
参考書籍
基本からきちんと学びたい方は、以下がおすすめです。
よいと思ってもらえたら、「スキ」をお願いします。
「スキ」は、継続の源泉です。
いいなと思ったら応援しよう!
![レイ│出願中特許:1件](https://assets.st-note.com/production/uploads/images/48089971/profile_bcd0a6347832547a8147fccdd9596907.png?width=600&crop=1:1,smart)