blog/content/labs/infra/2013-07-20-shell_scripting_...

121 lines
2.5 KiB
Markdown

---
title: お仕事で覚えたシェルスクリプトの使い方
author: kazu634
date: 2013-07-20
author:
- kazu634
categories:
- Labs
- Infra
tags:
- ShellScript
---
## sedコマンドでA行目からB行目を切り出す
以下のように実行してあげるよ:
`sed -n 'A,Bp' /path/to/file`
実行例はこんな感じです:
```
kazu634@macbook% cat -n /etc/hosts
1 ##
2 # Host Database
3 #
4 # localhost is used to configure the loopback interface
5 # when the system is booting. Do not change this entry.
6 ##
7 127.0.0.1 localhost
8 255.255.255.255 broadcasthost
9 ::1 localhost
10 fe80::1%lo0 localhost
11
12 59.106.177.26 sakura-vps
13 133.242.151.82 sakura-vps2
14
15 192.168.3.4 esxi
16 192.168.3.5 freenas
17 192.168.3.100 vyatta
kazu634@macbook% sed -n '1,8p' /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
```
## sedコマンドでA行目から最終行までを切り出す
以下のように実行してあげるよ:
`sed -n 'A,$p' /path/to/file`
実行例はこんな感じです:
```
kazu634@macbook% sed -n '7,$p' /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
59.106.177.26 sakura-vps
133.242.151.82 sakura-vps2
192.168.3.4 esxi
192.168.3.5 freenas
192.168.3.100 vyatta
```
## 空ファイルの削除
以下のように実行してあげるよ:
`find /path/to/root-dir -type f -empty | xargs rm`
## 空ディレクトリの削除
以下のように実行してあげるよ:
`find /path/to/root-dir -type d | xargs rmdir`
もしかすると`sort`を間に挟めるともっといいのかも。
## grepコマンドでPerl互換の正規表現をつかう
-P オプションを指定する!
## grepコマンドでパターンにマッチするファイル名のみを表示する
-l オプションを指定する!
## sedで空行を削除
`sed '/^$/d' /path/to/file`
実行例はこんな感じです:
```
kazu634@macbook% sed '/^$/d' /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
59.106.177.26 sakura-vps
133.242.151.82 sakura-vps2
192.168.3.4 esxi
192.168.3.5 freenas
192.168.3.100 vyatta
```