2015-10-01から1ヶ月間の記事一覧

詳説 正規表現 Part2

Rubyの簡単なサンプル if ($reply =~ m/^[0-9]+$/) =~ の部分は マッチする と読むと便利。 m は正規表現マッチを試みるという意味。 $celsius =~ m/([-+]?[0-9]+)([CF])$/ 括弧で囲むことによって、$1には [-+]?[0-9]+ にマッチしたテキスト、$2には [CF] …

詳説 正規表現 Part1

メタ文字について ^cat 行頭のcatという文字にマッチする。 cat$ 行末のcatという文字にマッチする。 gr[ea]y greyかgrayという文字にマッチする。 [0-9a-zA-Z] 数字、英字の大文字、小文字のどれかにマッチする。 [ ] の中にある !.? などはメタ文字ではな…

UNIXシェルスクリプト第3章Part1

シェル関数、組み込みコマンド name() { command } 関数の定義の仕方。 return [n] 関数の戻り値の設定の仕方。 任意の番号を設定すれば、それがこの関数の戻り値となる。 ここで返す値は通常のコマンドの実行終了ステータスと同じ取り扱いになり、シェル変…

UNIXシェルスクリプト第2章

シェル変数の初期設定 ${variable:=value} ${variable=value} 値がある場合、そのままの値を利用する。 値がない場合、valueの値を代入する。 コロンがある場合は変数が未使用、もしくはヌル値がセットされているときに値がないとみなす。 コロンがなければ…

UNIXシェルスクリプト第7章 Part2

sedを使っての編集 sed -e "s/^TextToRemove//" ^ は行の先頭を表す。^abcという指定にすれば、行の先頭にabcという文字列がある場合、という意味になる。 先頭のみを指すので、gは付ける必要がない。 sed -e "s/TextToRemove\$//" $は行の末尾を表す。$はシ…

UNIXシェルスクリプト第7章 Part1

フィルタの使用法 cat file1 file2 file3... | filter_1 | ... 複数のファイルをまとめて処理したければ、catコマンドの引数にファイルを書き並べれば良い。 filter_1 < file | filter_2 | ... 1つだけのファイルならリダイレクション機能を使うほうが良い。…

UNIXシェルスクリプト第10章 Part10

ファイルをサーチするシェルスクリプト findfile 特に無し。 文字列をサーチするシェルスクリプト findstr if [ "$OPTIND" = 1 ] ; then getoptsが使える環境では、OPTINDという変数に自動的に1の値がセットされている。 while getopts iv OPT getoptsコマン…

UNIXシェルスクリプト第10章 Part9

コマンドをサーチするシェルスクリプト findcmd IFS=: for dir in `echo "$PATH" | sed -e 's/^:/.:/' \ sed -e 's/::/:.:/g' \ sed -e 's/:$/:./'` $PATHを : で区切って、先頭や末尾にマークだけがある場合、あるいはカラの指定を全部カレントディレクトリ…

UNIXシェルスクリプト第10章 Part8

ディレクトリをコピーするシェルスクリプト dircopy find . -depth -print | findコマンドは -depthオプションを使うとディレクトリ階層の深い順に表示させる。 付けた場合 付けなかった場合 a/b/c/d/e a a/b/c/d a/b a/b/c a/b/c/ a/b/f/d/e a/b/c/d a/b/f/…

UNIXシェルスクリプト第10章 Part7

指定したフィールドの値を集計するシェルスクリプト addcolumn awk '{total+=$'$COLUMN'} END {print total}' awkコマンドは複数行のデータを処理する。 処理する内容をシングルクォートで囲まなくてはならないので、 $COLUMNはシングルクォートから外してい…

UNIXシェルスクリプト第10章 Part6

行、単語、文字数をカウントするシェルスクリプト Wc wc $d/$PATTERN 2>/dev/null | grep -v " total$" >$TMP wcコマンドはテキストファイルの単語数を表示する。 エラーが出ても、ここでは捨て去る。 最終行にtotalとしてその総計が出力されるが、この行も…

UNIXシェルスクリプト第10章 Part5

シェルアーカイブを作成するシェルスクリプト Shar ※シェルアーカイブというのはBSD4.4以降に作りこまれた機能の1つ。 少数のファイルをftpやmailで配布するのに便利なようにと作られたもの。 シェルスクリプトの中にファイルのリストと中身も入れて1つにし…

UNIXシェルスクリプト第10章 Part4

ディレクトリを作成するシェルスクリプト MkDir IFS=/ for d in $1 IFS変数に / を代入することで区切り文字を / に変更できる。 $1を / で区切って分割し、変数dに入れてループさせる。 case $1 in /*) DIR= ;; *) DIR=. ;; esac 相対パスなら先頭に ./ を…

UNIXシェルスクリプト第10章 Part3

プロセス名に対してシグナルを送るシェルスクリプト Kill ※killコマンドはプロセスIDに対してシグナルを送る。 プロセスIDは数字で表され、ユーザはpsコマンドを使って求めるプロセスが南蛮のプロセスIDで走っているのかを確認しなくてはならない。 プロセス…

UNIXシェルスクリプト第10章 Part2

2つのディレクトリを比較するシェルスクリプト DirCmp ※指定した2つのディレクトリ下にあるファイル構成を比較し、 等しくないファイルをリスト表示する。以下の3パターンの表示を行う。 1番目のディレクトリ下にあって、2番目のディレクトリ下にはないファ…