シェルスクリプトで頻出コマンド~シェルの基礎~
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考記事>
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 指定した文字数までで重複を判断する
以上!!!!!!!!!