はじめに
業務を遂行してる時にシェルコマンドを使うことが多々ありますが、頻繫に使うコマンド以外のコマンドを勉強していきたいと思います。
慣れないシェルコマンド
bc(計算)
計算をするためのコマンド
$ echo '1+1'
1+1
$ echo '1+1' | bc
2
sed(置換)
文字を置換するためのコマンド
$ echo キムイババパワー | sed 's/イ/い/'
キムいババパワー
$ echo キムイババパワー | sed 's/バ/ば/'
キムイばバパワー
# 全ての検索対象の文字列を置換したい場合は後ろにgを付ける
$ echo キムイババパワー | sed 's/バ/ば/g'
キムイばばパワー
# 検索文字を再利用したい時場合は&を使う
$ echo キムイババパワー | sed 's/ババ/&&/'
キムイババババパワー
# 検索対象の文字列を括弧で囲み、\1、\2・・・で呼び出す
$ echo キムイババパワー | sed -E 's/(キムイ)(ババパ)/\2\1/'
ババパキムイワー
# .は任意の一文字を意味する
$ echo キムイババパワー | sed -E 's/(キ..)(...)/\2\1/'
ババパキムイワー
sortとuniq(集計)
# 辞書順に並べる
$ seq 5 | awk '{print $1%2 ? "奇数" : "偶数"}' | sort
偶数
偶数
奇数
奇数
奇数
# 重複を消す、重複する行は連続して並んでる必要がある
$ seq 5 | awk '{print $1%2 ? "奇数" : "偶数"}' | sort | uniq -c
2 偶数
3 奇数
# sortせず、uniqを使用した場合
$ seq 5 | awk '{print $1%2 ? "奇数":"偶数"}' | uniq -c
1 奇数
1 偶数
1 奇数
1 偶数
1 奇数
xargs(一括処理)
# 1、2、3、4という名前の4つのディレクトリを作成
$ seq 4 | xargs mkdir
$ ls -d ?
1 2 3 4
# 1、2、3、4という名前の4つのディレクトリを削除
$ seq 4 | xargs rmdir
$ ls -d ?
ls: cannot access '?': No such file or directory
# 1、3という2つのディレクトリを作成
$ mkdir 1 3
# それぞれ2、4という名前に変更
$ seq 4 | xargs -n2 mv
$ ls -d 2 4
2 4
# -I オプションは渡されたデータを任意の位置の引数に展開
$ seq 4 | xargs -I@ mkdir dir_@
$ ls -d dir_*
dir_1 dir_2 dir_3 dir_4
さいごに
個人的に慣れや流れでコマンドを使用している場合が多いですね。
ちゃんと理解して使いたいと思います。
参考