シェルプログラミング の変更点
Top / シェルプログラミング
- 追加された行はこの色です。
- 削除された行はこの色です。
- シェルプログラミング へ行く。
- シェルプログラミング の差分を削除
*シェルプログラミング [#la473fd9] シェルで悩んだところのメモ書きです。 ***シェルの変数について [#p62c25da] 変数の意味は以下の通り |変数|意味| |$$|シェル自身のPID(プロセスID)| |$!|シェルが最後に実行したバックグラウンドプロセスのPID| |$?|最後に実行したコマンドの終了コード(戻り値)| |$-|setコマンドを使って設定したフラグの一覧| |$*|全引数リスト。"$*"のように「"」で囲んだ場合、"$1 $2 … $n" と全引数を一つにくっついた形で展開される。| |$@|全引数リスト。"$@"のように「"」で囲んだ場合、"$1" "$2" … "$n" とそれぞれの引数を個別にダブルクォートで囲んで展開される。| |$#|シェルに与えられた引数の個数| |$0 |シェル自身のファイル名| |$1~$n|シェルに与えられた引数の値。$1は第1引数、$2は第2引数…となる。| ほうほう、色々あるねー &br;&br; ちなみに、以下のサイトを参考にしました。 -[[シェルスクリプト入門:http://www.k4.dion.ne.jp/~mms/unix/shellscript/index.html]] ***リダイレクトについて [#ld20af95] 標準出力のリダイレクトは以下の通り コマンド > aaa.txt 標準出力+エラー出力のリダイレクトは以下の通り コマンド >& aaa.txt へー勉強になった ちなみに、追記の場合は、「>」→「>>」にすればいいよ ***awk [#y1919cd4] awkはawkで何ページも書けちゃう内容なんだろうけど、とりあえず今日使ったやつだけ。 こんなテキストファイルがあります。このテキストファイルの名前が「Address.txt」だとします。&br; まあ、アドレス帳だと思ってください。 firstName lastName address phoneNo Shogo Miyazaki Tokyo 090-xxxx-yyyy Tatsuya Akasaka Osaka 080-aaaa-bbbb Mayuko Kobayashi Osaka 080-aaaa-bbbb Hana Takahashi Nagoya 070-cccc-dddd Tarou Omori Nagoya 070-cccc-dddd ・・・・ このアドレスの、苗字だけほしい場合、こんな感じにawkです。 [root@server tmp]# awk '{print $2}' Address.txt lastName Miyazaki Akasaka Kobayashi Takahashi Omori へー、2列目だけ取れた。 じゃあ、このアドレス帳のなかで、Address(住所)が「Osaka」の人のlastName(苗字)がほしいとき、こんな感じでawkします。 [root@server tmp]# awk '$3=="Osaka" {print $2}' Address.txt Akasaka Kobayashi へー、大阪の人だけ取れた。 ちなみに、|をつかってつなげることも出来ます。つなげるイメージはこんな感じ。 [root@server tmp]# cat Address.txt | awk '$3=="Osaka" {print $2}' Akasaka Kobayashi ちなみに、こうやっても同じ [root@server tmp]# cat Address.txt | grep Osaka | awk '{print $2}' Akasaka Kobayashi 最初の一人だけほしい場合 [root@server tmp]# cat Address.txt | grep Osaka | head -1 | awk '{print $2}' Akasaka ずいぶん色々出てきた。 awkは正規表現とかも使えるみたいだけど、今日はもうつかれた。リンクを参照。見れば多分出来ます。 -[[awk の使い方:http://www.iplab.is.tsukuba.ac.jp/script/www.osdp.is.tsukuba.ac.jp/hosokawa/awk/]]