ぽれいんのブログ

エンジニアになるために覚えたことを日記に付けます。

シェルスクリプトで頻出コマンド~シェルの基礎~

はじめに

インフラエンジニア初学者のぽれいんと申します。

転職する前はプログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

<参考記事>

awkコマンドの基本 - Qiita

sedコマンドの備忘録 - Qiita

uniqコマンドについて詳しくまとめました 【Linuxコマンド集】

 

 

date

dateコマンドはコマンドを実行することで現在の「西暦」「月」「日」「時間」「分」などを表す文字を出力することができる

date +%Y_%m%d_%a_%H:%M
→2021_1015_Fri_20:14

%Y  西暦     %m  月     %d  日

%H  時間     %M  分     %a  曜日

 

awk

awkはあるフィールドの文字列を抜き出す際に使用する。

標準出力を行うawkコマンド「print」を利用し、awkで指定したフィールドを取得

echo 1 2 3 4 | awk '{print $1}'
→1

上記の例ではechoで標準出力した”1 2 3 4”の中から空白で区切られた中で一番最初のフィールドの1のみを抜き出して出力している。

echo 1 2 3 4 | awk '{print $0}'
→0

※$0は「パイプやファイルから渡された、文字列全て」

区切り文字の指定

空白(スペース)以外を区切り文字に指定する際には -Fオプションを利用します。

echo 1-23-456-78910 | awk -F'[-]' '{print $2}'
→23
echo 1-23:456~78910 | awk -F'[-:~]' '{print $2,$4}'
→23 78910

※上記のように記入することでフィールド区切り文字・フィールドは複数指定できる

 

sed

sedは文字列の置換に利用する。

cat file | sed -e 's/:/,/g'     file内の全行の":"を","に置換
sed -e '1d' file        file内の1行目を削除

 

wc

wcはファイルの文字数・単語・行数を表示するプログラム。

cat /var/log/httpd/error_log |wc -l

-c  データに含まれる文字数を数える

-w データに含まれる単語数を数える

-l     データに含まれる行数を数える

 

cut

aukと同様にフィールドを抜き出す場合に利用する。

cat /etc/shadow | cut -d ":" -f 2

-f n(数字)      第nフィールドを抜き出す対象とする。引数はカンマ(,)で区切って複数、ハイフン(-)で繋いで範囲を指定できる.

-d "区切り文字"         区切り文字の指定が可能。 

 

sort

sortは並び替えを行うフィルタープログラム。

cat /etc/passwd | sort      行先頭の文字コード順に並び替えて表示

-n         行頭の文字列を数字として評価し、昇順で並び替える。

+n        第nフィールドを並び替えの対象とする

 

uniq

重複する行になんらかの処理を行う。

uniq file                fileから重複行を削除
uniq file1 file2 file1から重複した行を削除した結果をfile2に出力

-c     重複した行数もターミナル上に表示する

-d 重複した行のみをターミナル上に表示する

-D 重複した行をターミナル上にすべて表示する

-u 重複した行はターミナル上に一切表示しない

-f 指定した項目以降で重複を判断する

-w 指定した文字数までで重複を判断する

 

以上!!!!!!!!!