コマンドラインで使えるテキストブラウザw3mをインストールしました。
【php編】期間を設定して表示をかえる
キャンペーン中にだけバナー張りたい時に使います。落とすのを忘れたときも安心。
<?php
date_default_timezone_set('Asia/Tokyo');
// キャンペーン期間を指定
if (time() >= strtotime("2016-01-11 00:00:00") && time() < strtotime("2016-01-11 23:59:59")) {
echo "<p>ここに表示したいものを入れる</p>";
}
?>
※メモ※
date_default_timezone_set() は、日付/時刻関数で 使用されるデフォルトタイムゾーンを設定します。PHP 5.1.0以降で必要。
行の並び替えをしたい sort
▼コマンド
【sort】
・行を並び替えする
※デフォルトでは昇順にソートされる。
▼オプション
主なオプション(一部です)
-t
フィールドの区切り文字を指定するオプション
デフォルトはスペース。 例)-t ,でコンマ区切りになる
-f
大文字、小文字を区別しないでソートする
-k
どの列で並び替えるかを指定する
例) -k 1,2 … 1列目で比較し、1列目が同じ場合は 2列目で比較する。
例) -k 1 … 1列目で比較し、同じ場合は2列目で比較し、また同じであれば3列目で比較…というふうに最後の列まで順番に比較する。
-n
データを数値とみなしてソートする
-r
降順でソートする
-c
指定したファイルに対してソートされているかどうかチェックする
▼使用例
こんなファイルがあります
ID,name,age
1,aaa,20
4,ddd,35
5,eee,20
2,bbb,34
3,ccc,40
// ID(第1フィールド)で並び替え
$ cat test.txt | sort -t, -k1
1,aaa,20
2,bbb,34
3,ccc,40
4,ddd,35
5,eee,20
ID,name,age
// 2列目で降順ソート
$ cat test.txt | sort -t, -r -k2,2
ID,name,age
5,eee,20
4,ddd,35
3,ccc,40
2,bbb,34
1,aaa,20
▼日付のソート
// 年月日が混在する場合
$ cat day2.txt
2014/2/4,13
2013/12/6,20
2014/2/3,12
2015/1/1,4
2014/2/2,10
2015/8/1,25
2015/9/5,30
2015/4/5,3
2013/12/4,45
2013/11/30,30
// 日付でソート。(デリミタを/にする)
$ cat day2.txt | sort -n -t/ -k1
2013/11/30,30
2013/12/4,45
2013/12/6,20
2014/2/2,10
2014/2/3,12
2014/2/4,13
2015/1/1,4
2015/4/5,3
2015/8/1,25
2015/9/5,30
// デリミタを,にして第2フィールドでソート
$ cat day2.txt | sort -n -t, -k2
2015/4/5,3
2015/1/1,4
2014/2/2,10
2014/2/3,12
2014/2/4,13
2013/12/6,20
2015/8/1,25
2013/11/30,30
2015/9/5,30
2013/12/4,45
2つのファイルを比較する「comm(コム)」とか重複する行をまとめる「uniq」とか、まずソートする必要があるので、そんな時にsort使ってます。
指定した部分を取り出したい cut
▼コマンド
【cut】
・テキストファイルの指定した部分の文字列を切り出して表示する
▼オプション
-b
フィールド単位ではなく、バイト単位で抽出する範囲を指定する
-c
フィールド単位ではなく、文字単位で抽出する範囲を指定する
-d
フィールドのデリミタ(※)を指定する。-dオプションを指定しない場合はタブが指定される
-f
抽出するフィールドの番号を指定する
-s
区切り文字が存在しない行は出力しない
※デリミタ…要素の区切りとなる記号や特殊文字(の並び)のこと。CSVなら「,」など。
▼デリミタ・区切り位置の指定方法
・デリミタの指定方法
,の場合:-d','
半角スペースの場合:-d' '
・位置の指定方法 [-cオプション 文字単位]
-c3:3文字目
-c1,4:1文字目と4文字目
-c3-5:3~5文字目
-c-3:先頭から3文字
-c5-:5文字目以降
・位置の指定方法 [-fオプション フィールド単位]
-f3:3番目のフィールド
-f1,4:1番目と4番目のフィールド
-f3-5:3~5番目のフィールド
-f-3:先頭(1番目)から3番目のフィールド
-f5-:5番目以降のフィールド
▼使用例
こんなファイルがあります。
$ cat test.csv
ID,name,age
1,aaa,20
2,bbb,34
3,ccc,40
4,ddd,35
5,eee,20
//1~4番目の文字を取り出す
$ cut -c1-4 test.csv
ID,n
1,aa
2,bb
3,cc
4,dd
5,ee
//1番目のフィールドを取り出す
$ cut -d',' -f1 test.csv
ID
1
2
3
4
5
//2番目のフィールド以降を取り出す
$ cut -d',' -f2- test.csv
name,age
aaa,20
bbb,34
ccc,40
ddd,35
eee,20
grepでもっともっと検索したい! 複数検索・完全一致検索
このようなファイルがあります。
ID,name,age
1,aaa,20
2,bbb,34
3,ccc,40
4,ddd,35
5,eee,20
▼OR検索
「aaa」または「bbb」を検索します。
その①オプション -e をつける
1,aaa,20
2,bbb,34
その②「\(バックスラッシュ)」と「|(パイプ)」を入れてもできます。
1,aaa,20
2,bbb,34
※最後に\|をつけると全部表示されてしまうので注意↓↓
ID,name,age
1,aaa,20
2,bbb,34
3,ccc,40
4,ddd,35
5,eee,20
▼AND検索
「aaa」かつ「20」を検索します。
|(パイプ)でつなぎましょう
1,aaa,20
▼完全一致検索
完全に一致する単語だけに絞り込みたい時もありますよね。
そんな時は -wオプションを使います。
何も表示されない(該当なし)
1,aaa,20
文字列を検索したい grep
▼コマンド
【 grep 】
・指定した検索にマッチする文字列を表示
grep…
その意味するところは「ファイル全体から (global) 正規表現 (regular expression) に一致する行を表示(print)する」である。(wikipediaより)
▼【 grep 】主なオプション
-c パターンを含む行数のみを表示
-h 検索結果の先頭にマッチしたファイル名を同時に表示
-i アルファベットの大文字小文字の区別をしない
-l 検索条件にマッチしたファイル名のみを表示
-n 各行の先頭にファイルの行番号を表示
-s 存在しないファイルや読めないファイルに対してのエラーメッセージを抑制する
-v パターンに一致しない行を出力する
-w パターンの検索を単語として行う
-E 拡張正規表現を使用する
-F 固定文字列を使用する
▼その他
grepには、grep, fgrep, egrepという3つのコマンドがあり、それぞれの目的に合わせて使い分けます。
・grep…正規表現を使った文字列の検索を行う
・fgrep…正規表現は使用せずに文字列の検索を行う。オプション-E と同じような動作をする
・egrep…grepの正規表現よりも強力な正規表現を用いて検索する。オプション-F と同じような動作をする
▼使用例
こんなファイルがあったとします。
ID,name,age
1,aaa,20
2,bbb,34
3,ccc,40
4,ddd,35
5,eee,20
//20を取り出したい時
$ grep 20 test.csv
1,aaa,20
5,eee,20
//20以外を取り出したい時
$ grep -v 20 test.csv
ID,name,age
2,bbb,34
3,ccc,40
4,ddd,35
でも、「1行目」の「5」を取り出したい時。
普通にgrepだと、こうなっちゃう。。
4,ddd,35
5,eee,20
grep 以外のコマンドも使わないとですね。。
grepは超使うので、勉強のためにももっと書きたい(・∀・)