シェルスクリプト総合 その14
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2009/01/29(木) 06:54:48スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
前スレ落ちたみたいなのでリンク省略。
0422名無しさん@お腹いっぱい。
2009/04/10(金) 08:33:41まさかそんなところに突っ込んだの?( )笑
icc に変えればいいだけじゃん。
多分 >>418 の環境には iccがないから、テスト的に gcc でテストしただけだろ。
本当は >>419 は本気で >>418 がどこか間違ってると勘違いしてて、
>>420 で指摘されてとっさに苦し紛れに 「exec gcc "$@"」とか言い訳したんだろな(笑)
0423名無しさん@お腹いっぱい。
2009/04/10(金) 08:35:370424名無しさん@お腹いっぱい。
2009/04/10(金) 08:37:53for i in "$@" の ループ中に $@ をいじってるのを見て
反射的に間違っていると思った、に一票
(for の引数はループ前にしか評価されないから問題なし)
多分図星。
0425名無しさん@お腹いっぱい。
2009/04/10(金) 08:46:380426名無しさん@お腹いっぱい。
2009/04/10(金) 09:05:400427名無しさん@お腹いっぱい。
2009/04/10(金) 10:01:16どんなスクリプトの記述がありますか?
teeやscriptを入れると実行が止まってしまう
0428名無しさん@お腹いっぱい。
2009/04/10(金) 10:18:00{
} 2>&1 | tee hoge.log
とか
(
) 2>&1 | tee hoge.log
とかで囲ったら止まるの?
0429名無しさん@お腹いっぱい。
2009/04/10(金) 10:44:260430名無しさん@お腹いっぱい。
2009/04/10(金) 11:19:240431名無しさん@お腹いっぱい。
2009/04/10(金) 11:20:120432名無しさん@お腹いっぱい。
2009/04/10(金) 11:26:210433名無しさん@お腹いっぱい。
2009/04/10(金) 11:53:510434名無しさん@お腹いっぱい。
2009/04/11(土) 00:25:580435名無しさん@お腹いっぱい。
2009/04/11(土) 00:39:580436名無しさん@お腹いっぱい。
2009/04/11(土) 00:42:020437名無しさん@お腹いっぱい。
2009/04/11(土) 14:04:290438名無しさん@お腹いっぱい。
2009/04/11(土) 22:45:580439名無しさん@お腹いっぱい。
2009/04/11(土) 23:09:26もちろん、できません。というか、半角文字であってもできません。シェルスクリプトでは。
0440名無しさん@お腹いっぱい。
2009/04/12(日) 02:07:240442名無しさん@お腹いっぱい。
2009/04/12(日) 03:30:32もう、書き込まないで一生ろむってろっっwww
趣旨があってねーYO。ぷぷぷ
0443名無しさん@お腹いっぱい。
2009/04/12(日) 09:21:490444名無しさん@お腹いっぱい。
2009/04/12(日) 11:28:35たしか、
for file in *
do
ある処理 "$file"
done
みたいな感じで、「ある処理」の部分を質問していた。
で、質問自体は解決していた。
解決後に、「それじゃダメ」みたいなことをいう人がいて、
何レスか続いたあと、結局「* じゃドットファイルが処理されない」ことを
言いたかったらしい。でも、質問者はforループ内の「ある処理」の部分について
質問したかっただけで、forの部分は質問のために参考に書いただけ
(実際のスクリプトではおそらく違うのだろう)
今回荒してる >>419 = >> 441 と同じ匂いがする。
0445名無しさん@お腹いっぱい。
2009/04/12(日) 11:36:340446名無しさん@お腹いっぱい。
2009/04/12(日) 17:03:020447名無しさん@お腹いっぱい。
2009/04/12(日) 17:57:53利点なのだから、特別な処理をするわけでもない一般的なスクリプト中では
単純に * と書くことが良い。
などと、さらにズレてて無意味なレスをしてみる。
0448名無しさん@お腹いっぱい。
2009/04/14(火) 00:22:500449名無しさん@お腹いっぱい。
2009/04/14(火) 13:21:520450名無しさん@お腹いっぱい。
2009/04/14(火) 14:44:570451名無しさん@お腹いっぱい。
2009/04/14(火) 15:53:160452名無しさん@お腹いっぱい。
2009/04/14(火) 22:14:330453名無しさん@お腹いっぱい。
2009/04/15(水) 00:32:23ガリが嫌いな女も居るぉ。
0454名無しさん@お腹いっぱい。
2009/04/15(水) 09:41:51ファイルの作成日付を取得する方法を教えてください。
sh使ってます。
0455名無しさん@お腹いっぱい。
2009/04/15(水) 09:50:55st_atime: ファイルのデータが最後にアクセスされた時刻。
st_mtime: ファイルのデータが最後に修正された時刻。
st_ctime: ファイルステータスが最後に変更された時刻 (inode データの修正)。
0456名無しさん@お腹いっぱい。
2009/04/15(水) 10:55:130457名無しさん@お腹いっぱい。
2009/04/15(水) 10:58:12ctimeは「ファイルの作成日付」だと広く混同されているので、
「ファイルの作成日付を取得してくれ」と要求した人が
本当は「ctimeを取得してくれ」という意味で言ったのなら、
ctimeを取得すれば桶。
だから ls -lc (ls -lc --fu # for GNU) (ls -lcT # for *BSD)( ls -lce for solaris)
0458名無しさん@お腹いっぱい。
2009/04/15(水) 11:15:50lsだとフォーマットが一定しないのでlsでやりたく無かったんですが(年が入ったり入らなかったりする)、
ls -lc 等だとその問題もないみたいです。
ありがとうございました。
0459名無しさん@お腹いっぱい。
2009/04/15(水) 11:22:41↑この方が環境依存性は小さくなる。
0460名無しさん@お腹いっぱい。
2009/04/15(水) 11:37:320461名無しさん@お腹いっぱい。
2009/04/16(木) 20:01:06perl入れてるなら何でも入れてもいいと思う。
0462名無しさん@お腹いっぱい。
2009/04/18(土) 04:32:11CUIで困らない程度に使えるレベルなんだけど、どういう順序でshスクリプトを学習するのがいいのでしょうか?
1 普段、使っているbashの仕様を理解する。例題をヒントにいくつか、書いてみる。
2 ちょっとした自動化できる作業は、意識的にshスクリプトを書いて、どんどん試してみる
3 別のOSを用意し、どちらの環境でも汎用的に使えるスクリプトを書く。普段、良く使うプログラムのいろいろな設定ファイルも極力同一のものにしてみる
4
5
3以降の先は、まったく想像つかないんだけど
0463名無しさん@お腹いっぱい。
2009/04/18(土) 05:36:49bashにもBash POSIX Modeってのがあるか。
コマンド類はまぁ気合で。
#busyboxあたりにposix互換モードがあると便利なのになぁ。
0464名無しさん@お腹いっぱい。
2009/04/18(土) 10:07:33shとbashの違い以前に、どこまで古いバージョンに対応するかという問題
もあるし、完全に汎用なシェルスクリプトを追求して、時間コストや労力
に見合う結果を得られるのだろうか。
結局、対応したいOSやバージョン、そこから限定されるシェルの種類とバ
ージョンを設定して、その範囲で動作するものを作るしかないし、動作確
認はその限定された環境で行えばよいのではないだろうか。
仕事なのか趣味なのかによっても違うだろうし。
0465名無しさん@お腹いっぱい。
2009/04/18(土) 10:44:46bashのPOSIX Modeでbashismは防げない。
でも、dashもPOSIX互換を標榜しつつ、細かいところで
POSIXの機能がなかったりする。
困ったね。
0466名無しさん@お腹いっぱい。
2009/04/18(土) 11:09:11Solarisの/bin/shのように、posix非対応のシェルが標準シェルになってるし、
posix準拠を基準にしてしまうと、「汎用的」ではなくなってしまう。
だから、posixは忘れるのが吉。
0467名無しさん@お腹いっぱい。
2009/04/18(土) 12:03:03手間がかかるけど、posix規格(または、何かの規格)を意識して書く事は、いいことでしょ?
個人的には方向性も大きく違っていないと思っているんだけど
もちろん、どうしても例外的な事例が発生して、それをどうするんだというのは、あるんだろうけど
Solarisは目の前に現れたら考える
とりあえず、総合すると自分がよく使うOSに対応して、ある要請があったら、そのOSの対応を考えて、
随時対処していく感じが労力と時間を考慮すると現実的になんですかね
100行程度の高機能ではない簡易スクリプトをとりあえず自分の狭い世界観で汎用的に
書くことを想定としています
shスクリプトを学習したい理由は、
・shの機能を通じて、UNIXを理解したいこと
・頻出する作業は自動化して労力を軽減したいこと
例え、コーディングのほうが結果的には労力かかったとしても
自分はまだ学習レベルなので労力が結果的にトントンなら大成功
汎用的に書きたい理由は、
・本でそう奨励しているから(?)w
・「汎用的に」書くって響きがかっこいいじゃん
・プログラマなら、ケースバイケースで汎用的書けないと恥ずかしいでしょ
・まあ、多少なりとも汎用性を意識して書くことは、悪いことにはならないよな
馬鹿ってかっこいいなあw
0468名無しさん@お腹いっぱい。
2009/04/18(土) 12:41:57後任者が全く理解できずに大惨事になってると風の噂で聞いたので反省している
文字のエンコードするのにiconv何発もかましたうえに\\\\\\\\とかやってるからなぁ
0469名無しさん@お腹いっぱい。
2009/04/18(土) 12:47:53やっつけ仕事ではなく、ちゃんと他人が読むためのわかりやすいコードを書いたんでしょ?
もちろん、ポイントポイントでコメントでの解説付きで
0470名無しさん@お腹いっぱい。
2009/04/18(土) 12:51:34前任者のすごさをアピールできる。
もちろん、コメントなど書いてはいけない。
0471名無しさん@お腹いっぱい。
2009/04/18(土) 12:59:24bashだって同じだろ
0472名無しさん@お腹いっぱい。
2009/04/18(土) 13:22:58一部修正することになって、ソースを読み込むことになったら、どのくらいの時間で
読めるものだろうか
また、他人が一部修正を任されることになって、読み込むことになって、どのくらいの時間で
読めるものだろうか
0473名無しさん@お腹いっぱい。
2009/04/18(土) 13:23:06コメントどころか基本設計詳細設計まである
要は複雑なshellの経験者って簡単に集められないから
なんでもshellでやるのもよくないねみたいな
0474名無しさん@お腹いっぱい。
2009/04/18(土) 13:36:100475名無しさん@お腹いっぱい。
2009/04/18(土) 13:40:18コメントもドキュメントも残さないこと。
リストラ時代の保身テクニックですな。
0476名無しさん@お腹いっぱい。
2009/04/18(土) 13:52:46そこまでやっているなら、問題ないと思うけどなあ
bashのバッチで書かずに何でやるのよ?
学習するチャンスだし、峠を越えたら、あとあと楽になりそうなんだが
今ならPython?
その反省を踏まえて、1から再設計するなら、どういう比率でどの言語でやるんですか?
0477名無しさん@お腹いっぱい。
2009/04/18(土) 13:54:18それで褒められるのはdjbみたいな教祖様だけだろ。
まあ、djb信者以外は誰も褒めないけどさ。
0478名無しさん@お腹いっぱい。
2009/04/18(土) 14:07:00シェルスクリプトなんて(大幅に譲歩して)100行を越えたら
別のスクリプト言語で書き直すべきだと思う。
それこそ、PythonでもRubyでも良いからさ。
0479名無しさん@お腹いっぱい。
2009/04/18(土) 14:09:060480名無しさん@お腹いっぱい。
2009/04/18(土) 14:54:27わかる気もするけど
Pythonをちょっとやったけど、クラス化、パッケージ化とか、ちゃんと理解していないんだよなあ
比較的に若い言語というのもあって、他の言語の良いところを取り入れて、すごく書きやすいし、保守しやすいしでいいんだけど、
Pythonで使える概念を全部使って書かれたものを、設計を理解して、他人が保守するとなると大変そうだよね
LL言語でもPerl派、Ruby派、Python派といるだろうし
使用する言語を感情論では決めるべきではないけど
Python派「Rubyを使うなら、コメントどころか基本設計詳細設計まであるbashのバッチでいいじゃん」という意見もあるだろうし
>>473の選択でよかったんじゃないかと思う
もちろん、LL言語でいくのもありだと思うし、後任者の労力的には大差ないと思うけどさ
0481名無しさん@お腹いっぱい。
2009/04/18(土) 14:58:540482名無しさん@お腹いっぱい。
2009/04/18(土) 23:05:09どんな言語だろうと大枠で理解できるよね。過不足なくコメントも付けてさ。
んで、\\\\ みたいなトリッキーな処理は、ちょっと詳しく説明をコメントで
書いてあげればいいはず。
これで理解できなければ後任者が無能、逆に上記のように作られてなくて、
C言語でいうところの、全部がグローバル変数だったり、main関数だけの
ような構造であれば前任者が無能。
ネット関連の超有名企業に勤めてるんだが、エラー処理もロクにない
クソスクリプトばっかりで笑ってしまうorz
0483名無しさん@お腹いっぱい。
2009/04/18(土) 23:15:01あと、「詳しく説明をコメントで書く」って言うけど、
書くなら当然英語で書くと言う意味で言ってるんだよね?
エラー処理をちゃんとやらなくても済んでしまうのがシェルスクリプトのいいところ。
0484名無しさん@お腹いっぱい。
2009/04/18(土) 23:47:59# 漏れは、局所化したいだけの理由でlocalが書けるbashスクリプトにしちゃうことあるけど。
英語でコメント書かないといけない理由は分からん。
エラー処理してなくてショボイ不具合が結構出るのも納得いかん。
0485名無しさん@お腹いっぱい。
2009/04/19(日) 00:42:21昔は、loop 系は sub-shell 起こすから loop 内部で宣言した
変数は loop 外から参照できないってのがあったんだが
0486名無しさん@お腹いっぱい。
2009/04/19(日) 00:54:53ならない高機能シェルもあるけどさ。
ループ外で変数が取得できないのは意外と不便w
0487名無しさん@お腹いっぱい。
2009/04/19(日) 01:29:35ベル研系の言語はどれもそうだな。
副作用禁止で退屈なコード書きましょうと教育された世代には
厳しいもんがあるよ
0488名無しさん@お腹いっぱい。
2009/04/19(日) 01:42:000489名無しさん@お腹いっぱい。
2009/04/19(日) 03:39:34awkやRATFORは当時凄くシンプルで仕様の美しい言語。
0490名無しさん@お腹いっぱい。
2009/04/19(日) 08:27:53> 英語でコメント書かないといけない理由は分からん。
当然社内に外国人担当者もいる。
書いたスクリプトが海外の支社に回ることもある。
コンソールなど日本語が通らない環境でもスクリプトを読みたい時がある。
シェルによってはコメントに日本語が入ったスクリプトをLANG=Cで実行すると発狂する
日本語だと、EUCかUTF-8かJISかSJIS(←これはないが)か悩む必要がある。
0491名無しさん@お腹いっぱい。
2009/04/19(日) 11:04:10コメント書くために時間かけられるよりは…
時間書けるのを避けるために嘘コメントが残るよりは…
というわけで、母国語のコメント推奨。
必要な時に翻訳すれば良い。
0492名無しさん@お腹いっぱい。
2009/04/19(日) 11:09:320493名無しさん@お腹いっぱい。
2009/04/19(日) 15:45:28\\\\の処理具体的にどういう話?
どんだけトリッキーなのか、簡単な処理でいいので解説してちょ
>>491
技術文書なんだから中学英語でいいじゃん
英語説明に不安なら同じ説明を違う言い方で二回書けばいいんじゃねえ?
それか、使い方の例を載せるとか
エロイ人は計詳細設計も英語onlyなのかな?
日本語でしっかり書いて、英語で簡単な説明を書くみたいな感じ?
>>491
母国語のコメント推奨とかいうヤツってマジで害悪だよ
母国語の説明に飢えているなら、readme_jp.txtで簡単な説明を書いてもらえいいんじゃない
0494名無しさん@お腹いっぱい。
2009/04/19(日) 16:03:59日本がいやなら出てけよ。
0495名無しさん@お腹いっぱい。
2009/04/19(日) 16:50:33cshで書いてしまったほうが圧倒的な汎用性を得られる。
0496名無しさん@お腹いっぱい。
2009/04/19(日) 16:56:24釣りとしても面白くない。
最近のLinuxには (t)cshがデフォではインストールされていない。
0497名無しさん@お腹いっぱい。
2009/04/19(日) 16:59:29さすがに論外なんじゃない?
それならLL言語で書いてもらったほうがいい。
Perlだとちょっとこわいけど。
0498名無しさん@お腹いっぱい。
2009/04/19(日) 17:13:56プログラマーの共通言語は英語。
0499名無しさん@お腹いっぱい。
2009/04/19(日) 17:25:261世紀ちょっと前にちょんまげを切ったんだから、そろそろ近代化しようぜ
0500名無しさん@お腹いっぱい。
2009/04/19(日) 17:49:34と表現したのを知らないの?
実際、そうだったわけだが。
今は、いくつなんだろうか。大学卒業したぐらい?
0501名無しさん@お腹いっぱい。
2009/04/19(日) 18:36:15それは民主主義の成熟度に対して言ったものなので
全然話が違いますがな。
0502名無しさん@お腹いっぱい。
2009/04/19(日) 18:43:050503名無しさん@お腹いっぱい。
2009/04/19(日) 19:03:28まぁその欧の中でも英国は大陸の神話とかに対し憧れとかあるらしいが。トールキンに
関する話によれば。
0504名無しさん@お腹いっぱい。
2009/04/19(日) 19:36:07明治になって、至ってまともな民主主義だったと言われているよ。
朝日だって最初は反戦だったけど、反戦だと売れないから戦争に賛成になったわけで。
本だって発禁されても、出版社は発禁本と逆に名乗って、商売して儲けたらしいし。
改憲派の中でも明治憲法が理想の人は結構多いと思うよ。
そりゃあ、西欧の民主主義と比べたら歴史の年数が違うから成熟したとは、言い難いし。
宗教や人種で30世紀近くさんざん揉めている国々との外交力の差は明らかだよね。
なんというシェルスクリプトスレw
明治憲法みたいに真面目に設計すればいいものはできるという話かw
後任者の保守運用が・・・
0505名無しさん@お腹いっぱい。
2009/04/19(日) 19:57:150506名無しさん@お腹いっぱい。
2009/04/19(日) 20:26:19奴隷制度現役だった国に言われたくはないわw
0507名無しさん@お腹いっぱい。
2009/04/19(日) 20:31:34法学板にでも行きなされ。うざいよ。
ところで、読む相手が日本人しかいないと分かってるスクリプトに
無理して英語でコメントを書くのは時間の無駄じゃないかな。
UTF-8で書いてあれば問題は起こらないわけだし。
0508501
2009/04/19(日) 21:01:45↓のような感じのPOPのLOGINログを抜き出したのが山のようにあります。
---
Apr 19 01:23:45 popsvr1 pop3d: [ID 232323 mail.info] LOGIN, user=hogehoge, ip=[192.168.1.2]
(popsvr1はホスト名、232323は固定値(再起動しない限り不変)です)
---
このログから「2009/04/19 01:23:45,hogehoge,192.168.1.2」のように
日時とユーザ名とIPアドレスを抜き出してCSVに変換したいのですが、
シェルスクリプトで高速に動かすうまい方法はないでしょうか?
# 年は今年(date +'%Y'で得られる年)とします。
とりあえずcutコマンド等をひたすら使った稚拙なスクリプトは作っては
みたものの、30万行ほどログを処理させると、Core2Duoのそこそこの
CPU環境でも20分ぐらいかかってしまいまつ。(´・ω・`)
何かうまい方法があったら教えてください。おながいします。
0509名無しさん@お腹いっぱい。
2009/04/19(日) 21:12:11とりあえず、kshで実行してみたら?
それでも遅いのなら、シェルスクリプトで実行すること自体が
問題なのだと思う。
0511名無しさん@お腹いっぱい。
2009/04/19(日) 21:26:41あえてシェルの内部コマンドだけで書いてみたよ。
↓
while IFS=' =,[]' read mon day time d1 d2 d3 d4 d5 d6 d7 user d8 ip
do
echo 2009/$mon/$day $time,$user,$ip
done
あと、Aprを 04に変換したりするのだけパイプで sed でやってね。
0512名無しさん@お腹いっぱい。
2009/04/19(日) 21:29:32そのスクリプトでトータル何行(未来の行数も含めて)のログを処理させたいの?
0513名無しさん@お腹いっぱい。
2009/04/19(日) 21:34:50そこまでできてるなら、echoの直前に
case $mon in Jan)mon=01;;Feb)mon=02;;Mar)mon=03;;Apr)mon=04;;..省略..;;esac
の行を入れれば sedも不要。全部シェルでできる。
0514501
2009/04/19(日) 21:43:29ありがとうございますた。参考にさせていただきまつ。m(__)m
>>512
今のところ30万行ぐらいなんですが、もしかしたら最大で
500〜600万行ぐらい処理するかもしれません。
0515名無しさん@お腹いっぱい。
2009/04/19(日) 23:05:25コメントに頼るレベルで、プログラムで飯喰おうってのが甘い気がする。
もちろん母国語的、得意な言語が有って、それで前任者のプログラム置き換えていけばいいと思うけどね。
前任者がシェルスクリプトで組んでても、修正出来ないじゃ、作り直すしか無いし。
汎用的なシェルスクリプトよりは、いろいろな環境の癖を知って臨機応変に組めたほうが重宝すると思う。
いろんな環境を体験する事かな。SunOS, Solaris, Linux(rhel系,フリー系), Windows(cygwin, interix)ぐらいかなあ。SunOSはもう流石に無いと思いたいwww
0516名無しさん@お腹いっぱい。
2009/04/19(日) 23:15:44つ http://pc12.2ch.net/test/read.cgi/unix/1012927963/
0517名無しさん@お腹いっぱい。
2009/04/20(月) 01:23:45うちのところにもこういう人います。
意外と仕事が雑なんですよね・・・
0518名無しさん@お腹いっぱい。
2009/04/20(月) 01:57:50Apr 19 01:23:45 popsvr1 pop3d: [ID 232323 mail.info] LOGIN, user=hogehoge, ip=[192.168.1.2]をただ300万行コピペしたファイルをうちの並のマシンで1分38秒出た
メモリも喰わないし、シェルスクリプトってかなりいいタイム出すんだね
$ time ( cat pop-300.txt | ksh 2ch-shell-20090419a-foo.sh >> pop-300.cvs ) &
[7] 27015
$
real 1m38.872s
user 0m26.174s
sys 1m12.485s
[7] Done time ( cat pop-300.txt | ksh 2ch-shell-20090419a-foo.sh >> pop-300.cvs )
$ wc pop-300.cvs
300000 600000 12900000 pop-300.cvs
$ tail pop-300.cvs
2009/04/19 01:23:45,hogehoge,[192.168.1.2]
2009/04/19 01:23:45,hogehoge,[192.168.1.2]
2009/04/19 01:23:45,hogehoge,[192.168.1.2]
2009/04/19 01:23:45,hogehoge,[192.168.1.2]
2009/04/19 01:23:45,hogehoge,[192.168.1.2]
2009/04/19 01:23:45,hogehoge,[192.168.1.2]
2009/04/19 01:23:45,hogehoge,[192.168.1.2]
2009/04/19 01:23:45,hogehoge,[192.168.1.2]
2009/04/19 01:23:45,hogehoge,[192.168.1.2]
2009/04/19 01:23:45,hogehoge,[192.168.1.2]
0519518
2009/04/20(月) 02:23:18こんなに違うのか
$ time ( cat pop-300.txt | sh 2ch-shell-20090419a-foo.sh >> pop-300.cv2 ) &
real 5m45.010s
user 4m31.791s
sys 1m11.200s
$ time ( cat pop-300.txt | bash 2ch-shell-20090419a-foo.sh >> pop-300.cv3 ) &
real 5m47.776s
user 4m34.900s
sys 1m12.200s
0520名無しさん@お腹いっぱい。
2009/04/20(月) 02:31:55------------------------
echo aaa
echo ""
echo ""
echo ""
echo ""
echo ""
echo bbb
------------------------
以上のようにしているのですが、もっとエレガントな方法ってないですか?
イメージ的には
echo "" * 5
ってやると空行が五行文出力されるようなものです。
0521名無しさん@お腹いっぱい。
2009/04/20(月) 02:54:54for i in `seq -w 5`; do echo ""; done
echo "bbbb"
for i in "" "" "" "" ""; do echo $i; done
echo "cccc"
printf "\n"; printf "\n"; printf "\n"; printf "\n"; printf "\n";
echo "dddd"
echo; echo; echo; echo; echo;
echo "eeee"
# どれか?
# というか、普通にecho ""を縦に並べたほうがみやすいんじゃないの?
■ このスレッドは過去ログ倉庫に格納されています