- 1 名前:login:Penguin [2007/07/10(火) 23:17:13 ID:qGthZdME]
- UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく 平和にLINUX的スクリプト談義しましょうよ。 初めての自作スクリプト、自信ないから見てください。な初心者から トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで いろいろな人に参加して頂けると嬉しいです。 perlやらPythonやらの話が混ざっても良いんでない? 【sed】シェルスクリプト総合@LINUX Part2【awk】 pc11.2ch.net/test/read.cgi/linux/1154578200/ pc8.2ch.net/test/read.cgi/linux/1121994321/ >>2-5あたりに色々と。
- 735 名前:login:Penguin mailto:sage [2008/02/29(金) 01:30:01 ID:Pgw8LnNi]
- そこで 
- 736 名前:login:Penguin mailto:sage [2008/02/29(金) 01:41:57 ID:bnE90VmD]
- 行末にタブがある行を検索しようと
egrep '\t$' としてもマッチしません。awkだと awk '/\t$/' でマッチするのですが、grepだとどう書けばいいのでしょうか?
- 737 名前:login:Penguin mailto:sage [2008/02/29(金) 01:59:08 ID:Pf9U77bc]
- 元々、\tなどのメタキャラクタはgrepにもawkにもなかった。
GNU awkがPerlの影響を受けて拡張しただけ。
- 738 名前:login:Penguin mailto:sage [2008/02/29(金) 02:10:07 ID:bnE90VmD]
- そうなのかー・・・ちょっとしょぼーん。拡張されてもいい感じなんだけどね。
grep sed awk ぐらい正規表現は統一して欲しかったorz
- 739 名前:login:Penguin mailto:sage [2008/02/29(金) 08:36:03 ID:qSBWA6nK]
- タブを¥tと書きたかった理由が
シェルからコマンドラインにタブを打とうとして補完機能に取られるから、 であれば、Ctrl-V TAB でたぶんOK。
- 740 名前:login:Penguin mailto:sage [2008/02/29(金) 09:40:38 ID:HrPH8ECW]
- くだ質からこちらに誘導されたので、こちらで質問させて下さい。
ド素人質問で悪いのですが $ cat text1.txt 1 2 3 $ cat text2.txt 3 4 5 という二つのファイルがあるとして、それを1行ずつ割り算したいのです。 結果としてこういう形になれば満足です。 $ cat result.txt 0.33 0.50 0.60 どのように記述すれば良いのでしょうか、シェルは普段bashを使っていますが、 もちろんshでも構いません。宜しくお願いします。
- 741 名前:login:Penguin mailto:sage [2008/02/29(金) 09:42:18 ID:/PNY/URb]
- >>740
ぱっと思いついたもの。 ( echo 'scale=2' ; paste -d/ text1.txt text2.txt ) | bc
- 742 名前:login:Penguin mailto:sage [2008/02/29(金) 09:48:46 ID:HrPH8ECW]
- >>741
早速ありがとう御座います。こんな結果になりました。 .33 .50 .05 (standard_in) 5: parse error 53 4 5 pasteってこういうときにも使えるんですね。 parse errorとかbcとか知らないものも調べてみます。
- 743 名前:740 mailto:sage [2008/02/29(金) 09:58:48 ID:HrPH8ECW]
- >>741
すいませんでした、エラーは自分の不備によるものでした。 きちんと結果表示されたので満足しています。ありがとう御座いました。
- 744 名前:login:Penguin mailto:sage [2008/02/29(金) 10:03:24 ID:Mcdovrgg]
- スクリプトで2台のDebian間を rcp でコピーしようと思っています。
expect を使って、スクリプトを作成し、それがうまく動作するところまでは こぎつけたのですけれど、cronに登録すると動かなくなってしまいます。。。。 どうすれば解決するでしょうか?アドバイスをいただけると嬉しいです。 ちなみにスクリプトは ==========================- #!/bin/sh expect -c " set timeout 20 spawn rcp -r {コピー元} {コピー先} expect sword:\ ; send \"{パスワード}\r\" " ============================== こんな感じです。 ご教授のほどよろしくお願いします。
- 745 名前:login:Penguin mailto:sage [2008/02/29(金) 10:04:13 ID:/PNY/URb]
- >>744
カレントディレクトリがどこになってるのか、とか 権限に問題はないか、とか。 つーか rsync あたり使った方が楽じゃない?
- 746 名前:login:Penguin mailto:sage [2008/02/29(金) 17:16:24 ID:HrPH8ECW]
- シェルスクリプトでは無いのかもしれませんが、今日2度目の質問をさせて下さい。。
スレ初心者なので、スレ違いだったらすいません。 LPIC試験の勉強のために初めてjoinコマンドを使うのですが、うまくいかず困っています。 1.txtと2.txtに、1〜999999の中から任意に500個程度選び出した数字を それぞれフィールド1に、その他データをフィールド2以降に並べた テキストファイル(↓こんな感じにソートしたのものです) $ cat 1.txt $ cat 2.txt 50 aiu 50 abc 1111 80 eoka 140 def 2222 ↓ ↓ 999999 wawon 531243 xyz 3333 があるのですが、フィールド1に同じ数字が書かれた行を joinで繋げたいんです。色んなサイトやLPICの勉強本を参考にしたのですが $ join -1 1 -2 1 1.txt 2.txt $ join -j 1 1.txt 2.txt 上の2つでは、300個くらいHITするはずなのですが、数個しか出てきません。 全く同じ行に同じ数字がフィールド1に入っているものだけが出力されているようです。 行数が数行しかないファイルではきちんと違う行でも結合してくれるのですが、 行数が多いとjoinでは無理ってことはありますか? 500行くらい処理してくれるものだと思ったんですが・・・泣。 シェルスクリプトでうまくいくのであればヒントを下さい、シェルはbashです。
- 747 名前:login:Penguin mailto:sage [2008/02/29(金) 17:21:26 ID:/PNY/URb]
- >>746
いまいちやりたいことがわからん。 5行くらいのファイルで例示してみてくれ。 しかし join なんて使ったことないな。 そんなん知らなくても実務ではまったく困らん。 perl かなんかで書く勉強でもした方が役に立つよ。
- 748 名前:login:Penguin mailto:sage [2008/02/29(金) 17:52:51 ID:HrPH8ECW]
- >>747
初めて学ぶスクリプト言語をシェルスクリプトにしようと決めたところでして、 perlとかは全く知らないんです・・・。ですが実務ではなく趣味なので楽しんでいます。 それと説明が下手ですいません(泣)再度説明させて下さい。 $ cat join1.txt 157 A B 160 C D 1291 I J 1373 K L $ cat join2.txt 157 C D 160 E F 1373 K L この2つのファイルをフィールド1個目でくっつけて $ join -j 1 join1.txt join2.txt 157 A B C D 160 C D E F 1373 K L K L にしたいんですが(上のファイルだとくっつきました)、各フィールド数が7個 各行数が500行程度、各ファイルサイズは30KBくらいになると、フィールド1個目の 数字が一緒でも、行が1個でもずれているとくっつかなくなり、行が同じものしか結合しなくなりました。 joinの精度が低いのが原因なのだとしたらお手上げなのですが、 何か他の原因は思いつきますでしょうか。perlとかSQLは全く無知なのでシェルで済ませたいんです。
- 749 名前:746 mailto:sage [2008/02/29(金) 18:07:44 ID:HrPH8ECW]
- 自己解決したわけではないのですが、やっぱり精度の問題みたいです・・・。
>>748の join1.txt と seq 150 200 > seq1.txt でjoinコマンドを使ってみたら結合できましたが >>748の join1.txt と seq 1 2000 > seq2.txt でjoinコマンドを使ってみたら1つも結合出来ませんでした。 何か他の工夫で切り抜けたいと思います・・・失礼しました。
- 750 名前:login:Penguin mailto:sage [2008/02/29(金) 21:29:21 ID:d0BiI2Kq]
- >FILE1 と FILE2 は実行前に join フィールドの昇順にソートしておかなければならない(数値順のソートはだめ)。
だとさ。
- 751 名前:login:Penguin mailto:sage [2008/03/01(土) 06:54:44 ID:+XEPxk54]
- 月に一度、メールログを調べたいのですが、
下記スクリプトを毎月1日朝に走らせています。 --- #!/bin/sh pre_month_days=`date -d '1 days ago' +%d` zcat /var/log/maillog.{1..$pre_month_days}.gz | 引き渡し先プログラム --- これをシェルで走らせると zcat: /var/log/maillog.{1..29}.gz: No such file or directory となります。 ですが、 #zcat /var/log/maillog.{1..29}.gz と手打ちすると、ズシャーっとログが表示されます、エラーも最後まで出ません。 変数展開されていないならまだしも、まったく原因がわかりません。 どういう理由で「No such file or directory」が出るのでしょうか?
- 752 名前:login:Penguin mailto:sage [2008/03/01(土) 07:04:36 ID:5EZ+WSHA]
- 変数が入ってると{}って展開されないんじゃね?
- 753 名前:login:Penguin mailto:sage [2008/03/01(土) 10:33:04 ID:t3ZBWfKh]
- x=29
echo {1..$x} してみようぜ。
- 754 名前:751 mailto:sage [2008/03/01(土) 17:46:18 ID:IgLZSOLf]
- >>752-753
{1..29} ・・・ってことは、{1..29}そのものを探す=「No such file or directory」 ってことでしょうか? ということは、pre_month_daysの文だけfor文で回して、 $temp_textにためていってから、解析プログラムに引き渡すと今思ったのですが、 この$temp_textというのは、シェルスクリプトが終了したときには、 消えてなくなるのでしょうか?どこかに残っているものなのでしょうか? $temp_textだと、120万行ぐらいあるので、どこかに残っていれば圧迫しかねませんし・・・。
- 755 名前:751 mailto:sage [2008/03/01(土) 19:12:07 ID:IgLZSOLf]
- す、すいません、
bashのfor文ってわけわかりません、( )とか{ }とか使うと思っていたのですが・・・。 zcat /var/log/maillog.$x.gz >> $temp を繰り返して、 引き渡しプログラム $tempとしたいのですが、 for文(他のやり方もある?)をどう使えばいいのでしょうか?
- 756 名前:login:Penguin mailto:sage [2008/03/01(土) 19:37:33 ID:t3ZBWfKh]
- for文はCみたく配列を添え字でループするのと違って、
並べた要素1つ1つに対してループするというもの。 for x in 1 2 3 4 5; do echo $x done とかな。 1から先月末日までの日の並びを作るために、Linuxならおそらくseqが使える。 # BSDだとjot for $x in `seq $pre_month_days`; do zcat ...$x... done とか。
- 757 名前:login:Penguin mailto:sage [2008/03/01(土) 20:11:24 ID:quX+uZMv]
- bash なら
for (( i = 0; i < 10; i++ )); do echo $i done みたいな C っぽい for 文も使える。
- 758 名前:751 mailto:sage [2008/03/01(土) 20:32:55 ID:IgLZSOLf]
- >>756-757
seqを使ってもエラーが出るので、 Cっぽくやってみました。 aaa.1.txt aaa.2.txt aaa.3.txt を用意して、 ------------------ #!/bin/bash x=3 temp="" for (( i=1 ; i < $x+1; i++ )); do cat aaa.$i.txt >> $temp done cat $temp ------------------- ./test2.sh: line 5: $temp: ambiguous redirect ./test2.sh: line 5: $temp: ambiguous redirect ./test2.sh: line 5: $temp: ambiguous redirect マズー(;´Д`) am・big・u・ous[ mbjus ] [形] 1 2通り(以上)の解釈を許す 2 (正体の)あいまいな;紛らわしい;はっきりしない, ぼんやりした, もうろうとした, おぼろげな
- 759 名前:login:Penguin mailto:sage [2008/03/01(土) 20:49:48 ID:pGgAUYn5]
- temp=""
書き込み先がないじゃんか。 temp=nulpo.txt とか書き込み先がないと。
- 760 名前:759 mailto:sage [2008/03/01(土) 21:51:32 ID:IgLZSOLf]
- い、いけました。
1ヶ月のメールログ1.4GBを食わせることができました。 ありがとうございます。
- 761 名前:login:Penguin mailto:sage [2008/03/01(土) 22:39:09 ID:pGgAUYn5]
- >>760
最初の>751をよく見てなかったんだけど、maillog.*がそんなに多くない(毎月かならず1〜29になっている、てので)なら for file in `ls /var/log/maillog.*` do zcat $file | 処理プログラム done でいいのでは。 それと焦って名前欄間違えないように〜w
- 762 名前:760 mailto:sage [2008/03/01(土) 23:08:45 ID:IgLZSOLf]
- あぅ、すいません。
logrotateはdailyの120でcompressなんです。 で、月次解析なんで、 その日の前日の「日にち」を取って、 zcatしなくちゃならなかったんです。 でも、これで月次の解析ができます〜
- 763 名前:login:Penguin mailto:sage [2008/03/02(日) 03:30:36 ID:b0TlSvfI]
- いい流れた
- 764 名前:login:Penguin mailto:sage [2008/03/02(日) 22:17:28 ID:eyDRtewQ]
- >>760
ファイルに落とさない方法もあるぞ 引き渡し先がワンパス処理で無い場合は失敗する可能性 があるのでおすすめ出来ないが... #!/bin/sh pre_month_days=`date -d '1 days ago' +%d` ( for i in `seq 1 $pre_month_days` ; do printf "/var/log/maillog.${i} " done ) | xargs echo zcat | 引き渡しプログラム exit $? ##
- 765 名前:login:Penguin mailto:sage [2008/03/03(月) 09:55:39 ID:4ARrqAXS]
- 括弧はいらないね
- 766 名前:login:Penguin mailto:sage [2008/03/03(月) 13:44:09 ID:WtSCj+5U]
- >>751
eval zcat /var/log/maillog.{1..$pre_month_days}.gz | 引き渡し先プログラム
- 767 名前:login:Penguin mailto:sage [2008/03/03(月) 23:36:12 ID:5ghxiELA]
- んー
簡単なApacheログ解析&集計用スクリプト組みたいんだけどシェルスクリプトだとパフォーマンス悪いかな? RubyやPythonは使えないんで、bash系シェルスクリプトかPerlでやってみたいんですが ちなみにログフォーマットはこんな感じ mxxxxxx.dynamic.ppp.asahi-net.or.jp - - [27/Feb/2008:15:46:04 +0900] "GET / HTTP/1.1" 200 101323 "hoge.piyo/" "Opera/9.25 (X11; Linux i686; U; ja)" 1リクエストに対して1行記録され、日付毎にファイルがある。(ファイル名の例:access_log_20080227) 465日分で容量2.5GB超とちょっと多いです。 やりたいことは項目別のランキングをテキスト出力だから、スクリプト自体は簡単そう
- 768 名前:login:Penguin mailto:sage [2008/03/03(月) 23:43:14 ID:Zrc2Vdg0]
- それはanalogとかでできないものでしょうか(´-`)
- 769 名前:login:Penguin mailto:sage [2008/03/03(月) 23:46:01 ID:5ghxiELA]
- >>768
実はそんな気がしてた ありがとう('`)〜♪
- 770 名前:login:Penguin mailto:sage [2008/03/04(火) 00:34:34 ID:61UoHuE3]
- ウワー早い
2分ちょいでこれだけ解析できるのかー ああでも肝心なRefererランキングが出てないわ Analogスレは4ヶ月近く誰も居ないみたいだしドウシタモンダカー
- 771 名前:login:Penguin [2008/03/04(火) 09:48:48 ID:kUaxbjJj]
- Bashを使ってシェルスクリプトの練習をしています
ファイルに特定の文字列が記載されていたら処理を分岐させるというシェルを書きたいと思っているのですがなかなか上手くいってくれません 何かいい方法がありましたら教えていただけないでしょうか やりたい事はファイル内にHTMLという文字列が入っていたらAの処理 入っていなかったらデフォルトの処理をしたいと考えたので 下記のようにしてみました TMP=`cat $YEAR$MONTH$DAY.csv |grep HTML`; echo $TMP case "$TMP" in HTML)echo "HTML file" ;; *) echo "##################" esac
- 772 名前:login:Penguin mailto:sage [2008/03/04(火) 09:54:01 ID:oWYbuV9h]
- >>771
if grep HTML "$YEAR$MONTH$DAY.csv" >/dev/null; then echo "HTML file" else echo "##################" fi
- 773 名前:login:Penguin mailto:sage [2008/03/04(火) 14:33:52 ID:kUaxbjJj]
- >>772
ありがとうございます 教えていただいた通りにやったら問題なくできました なぜcat|grepのときは上手くできなくて grepの時は問題なくできるのかがちょっと分からないのですが いろいろ調べてみようと思います
- 774 名前:login:Penguin mailto:sage [2008/03/04(火) 21:04:44 ID:rsD9V5Zj]
- HTML) を *HTML*) としてみようぜ。
- 775 名前:login:Penguin mailto:sage [2008/03/04(火) 23:06:20 ID:VrfR3qUe]
- >>774
やだよ
- 776 名前:login:Penguin mailto:sage [2008/03/05(水) 00:05:43 ID:EV9xTscM]
- grep -q を使わないのはポータビリティー重視だから?
- 777 名前:かね ◆CHAS.7AvVo mailto:sage [2008/03/05(水) 10:22:08 ID:JQ4a1dor BE:411629928-2BP(158)]
- >>777ゲット
- 778 名前:login:Penguin mailto:sage [2008/03/10(月) 18:08:47 ID:qsIz6iXz]
- 論文を書くときに使うグラフをTopazというソフトを用いて作成しております。
その結果、グラフがepsファイルとして作成されるのですが、Windowsにもってくるとフォント関係でエラーが生じてしまいます。 なのでLinuxでフォントをアウトライン化しようと思い「eps2eps」というコマンド(シェルスクリプト?)を用いて epsファイルのフォントをアウトライン化しました。 しかし、そうするとbounding boxがおかしくなってしまいます。 ですので元のepsをテキストエディタで開き、bounding boxの項目をコピペして対応しています。 それでようやく本題なんですがw 上のような作業を、複数のファイルに対して一括で行いたいのです。 for file in *.eps do eps2eps $file ${file%eps}2 done のようなシェルスクリプトを使えば一括でアウトライン化epsができると思うのですが さらに、インプットファイルをテキストエディタで開きbounding boxの項目をコピー アウトプットファイルにbounding boxの項目を貼り付け というような機能を持たせることはできるのでしょうか?
- 779 名前:login:Penguin mailto:sage [2008/03/10(月) 19:47:47 ID:PtxOKuxD]
- ed
- 780 名前:login:Penguin mailto:sage [2008/03/11(火) 02:26:04 ID:3Mwu+R1S]
- >>778
スクリプトに慣れた人ならすぐに作れる。
- 781 名前:login:Penguin mailto:sage [2008/03/12(水) 23:51:51 ID:wAPdko8t]
- >>780
?
- 782 名前:login:Penguin mailto:sage [2008/03/13(木) 22:58:09 ID:A7XLS93G]
- >>781
!
- 783 名前:login:Penguin mailto:sage [2008/03/13(木) 23:17:56 ID:SoJCaJfU]
- ああ、無情
- 784 名前:login:Penguin mailto:sage [2008/03/14(金) 00:22:41 ID:XhBWUHl1]
- シログミガンバレ
- 785 名前:login:Penguin mailto:sage [2008/03/18(火) 03:16:13 ID:TPZ/j5Uw]
- basenameが第二引数を取ることを今知った。
- 786 名前:login:Penguin mailto:sage [2008/03/20(木) 22:15:42 ID:N/tKbDY7]
- echo hoge=1で代入、表示両方できる知った件
- 787 名前:login:Penguin mailto:sage [2008/03/21(金) 00:14:20 ID:jeNVffRp]
- >>786
$ echo hoge=1 hoge=1 $ echo x"$hoge"x xx bash 2.05b@debian ではできないぞ。 環境を教えてくれ。
- 788 名前:login:Penguin mailto:sage [2008/03/21(金) 01:11:50 ID:3ULYcj2H]
- そんなのできたら困る。
- 789 名前:login:Penguin [2008/03/21(金) 01:53:30 ID:Mk2nPfge]
- >>539
>>537 最近はGUIの環境もシェルと呼んだりするらしいしね. >ところで,シェルスクリプトをシェルと略す感覚が信じられない >.せめてスクリプトのほうを残すべきじゃないのか,意味的に… javascriptをjavaって呼ぶ奴おおいし、むきになんなよ ちっせーな、何度も何度も
- 790 名前:login:Penguin mailto:sage [2008/03/21(金) 03:00:16 ID:tzWxNirH]
- >>789
javascriptとjavaだって別物じゃねーか まったく別の意味にとられる表現は避けるべきだろ。
- 791 名前:login:Penguin mailto:sage [2008/03/21(金) 03:26:20 ID:yp4cACqr]
- javaの開発と言われて行ってみたら、javascriptの案件だった……
経験者を求めていた筈なので確認をとったら速攻で別案件に回されたけど。 (だれがどこでまちがったのかはしらない。たぶん、えいぎょうのアレがマタやらかしたんだろうけど)
- 792 名前:login:Penguin mailto:sage [2008/03/21(金) 18:28:30 ID:dmCthI0s]
- >>789
無能丸出しだな。
- 793 名前:login:Penguin mailto:sage [2008/03/22(土) 00:13:19 ID:/5OR7tiw]
- そうだよね、文字の"あ"を"い"って発音してもいいじゃん?
- 794 名前:login:Penguin mailto:sage [2008/03/22(土) 06:15:29 ID:EkMxwp6R]
- >>792
頭の構造が粗雑なんだろうね。 しかし無能とは決めつけられないよ。土方としては有能かも知れないじゃないか。
- 795 名前:login:Penguin mailto:sage [2008/03/22(土) 13:14:51 ID:I+OQFn9y]
- >>794
井の中の蛙、大海を知らず。
- 796 名前:login:Penguin mailto:sage [2008/03/22(土) 14:00:07 ID:4xBJlBA7]
- javascriptをjavaと呼ぶ井戸の外の世界
- 797 名前:login:Penguin mailto:sage [2008/03/22(土) 14:23:40 ID:79XeAASw]
- もうすべて「あれ」と「あれ以外の何か」でいいんじゃね?
「この開発にはあれが必要だな」 「そうですね、あれも必要です」 「あれのほうはどうだ」 「あれはあれ以外のあれでやりましょう」 「あれはあれだったからな」 募集要件にはエスパー希望と書けば何も問題ない。
- 798 名前:login:Penguin mailto:sage [2008/03/22(土) 14:25:08 ID:ldkQa/0V]
- 残念なことにハードディスクドライブをハードと略すおっさんを結構見かけるのがリアル世の中なのねん。
javascriptをjavaと呼んじゃうおばちゃん、ねーちゃんだってざらにいるよ。 どっちかというと>>789のほが常識的な気がす
- 799 名前:login:Penguin mailto:sage [2008/03/22(土) 15:16:06 ID:OrPubXKD]
- >>789
perlスクリプトをPerlと呼んだりPerlでやると言ったり awkスクリプトをawkと読んだりawkでやると言ったり それと同じでは
- 800 名前:login:Penguin mailto:sage [2008/03/22(土) 16:27:56 ID:5bvfNtQw]
- 省略したら同種の別の言葉になるかどうかだな。
- 801 名前:login:Penguin mailto:sage [2008/03/22(土) 16:38:49 ID:ldkQa/0V]
- 厳密なことをいえばさ、シェルって単体で言う場合はシェルスクリプトの略じゃないのよね。
(>>537,>>539はこれにつっこんでいる) OSのカーネルに対する、(コマンド)インターフェイス外殻(カーネルの外層を覆う殻の概念)を 現在はCUI/GUIの別を問わずにシェルと呼んでる。このうちGUIの場合はグラフィカルシェルとか CUIの場合はコマンドラインインタプリタとか呼ぶのだけど、このコマンドラインインタプリタを Linuxを含めたUNIX系OSでは単にシェルと呼ぶ慣習がある。昔UNIXにはGUIなんて無かったらね、 シェルといったらコマンドラインインタプリタのことだ、ということに定着していたわけね。 いわゆるsh, bash, csh, tcshのshがシェルだ罠。 シェルスクリプトの略がシェルじゃなくて、シェルで動くスクリプトがシェルスクリプトなの。 順番が逆なのよ。 awk/perlもawk(言語)/perl(言語)のスクリプトがawk/perlスクリプトなのであって awk/perlスクリプトの略がawk/perlなんじゃないよ。 まぁどうでもいいけどな。 以上を踏まえてあえて言えば たしかにシェルとシェルスクリプトは別物だしjavaとjavascripは別物だし、 細かいこと言えばGUIだってグラフィカルシェルなのだ(>>539)が あんま細かいことをいうとバカみたいだ。つーか狭量に見える。 というわけで>>789のほが同意できる。聞き上手って言葉があるじゃない?
- 802 名前:login:Penguin mailto:sage [2008/03/22(土) 17:33:00 ID:/5OR7tiw]
- でだ、>>539がシェルスクリプトをシェルと略さずにせめてスクリプトと略しゃ
いいだけじゃねーかと建設的な提案をしたのに、他の軽量プログラミング言語 までもちだし、略した言葉を受け取った人間の能力の問題じゃね? となるこのスレの流れに、思わず小岩井ミルクコーヒーを噴いた。 >>791の様に読解および対話能力が備わってないと、悲惨な状況のド真中に パラシュート降下させられる奴がわんさかでそうだ。単語の略し方の問題で。
- 803 名前:login:Penguin mailto:sage [2008/03/22(土) 18:27:12 ID:g5kThUF3]
- >たしかにシェルとシェルスクリプトは別物だしjavaとjavascripは別物だし、
>>800の言う通り、 シェル・スクリプトをシェルと呼んでも文脈から意味は通じるが、 javascriptをjavaと呼んでしまうと別のものを指してしまう。 混同するな。
- 804 名前:login:Penguin mailto:sage [2008/03/22(土) 19:12:09 ID://sUM775]
- WikipediaをWiKiとかね。
- 805 名前:login:Penguin mailto:sage [2008/03/22(土) 19:20:26 ID:ldkQa/0V]
- では、世の間違いをどこまでも正していってくれ。
思い浮かべて欲しい世の人々は道の傍らでJavaとJavascriptの違いを 切々と説く君たちに聖者が来れり、天国は来れりと歓喜することであろう。 が、まぁ少なくとも営業の彼と経理の彼女、はす向かいの鈴木さんに 今後一切飲みに誘われなくなるのは間違いと思うけどね。
- 806 名前:login:Penguin mailto:sage [2008/03/22(土) 19:26:48 ID://sUM775]
- >>805 は啓蒙活動を自粛するようです。
- 807 名前:login:Penguin mailto:sage [2008/03/22(土) 19:39:22 ID:pZoAGsoS]
- モヒカン族と村人ですから
- 808 名前:login:Penguin mailto:sage [2008/03/22(土) 19:39:41 ID:d90KTFFK]
- >>805
さっさと氏ね
- 809 名前:login:Penguin mailto:sage [2008/03/22(土) 20:07:27 ID:/5OR7tiw]
- >>805
AとBは異なるという説明し、その異なりを無視して同一のもととして扱うと 余計なコストが発生するから、次からはきちんと区別してくれという依頼が 出来ない風土、もしくは、意思決定にかかわる情報を扱うやつが説明しても、 その異なりを理解できないなら、そんな会社つぶれるだろ常考。 また、痛いレスみてJavaとJavascriptも区別して話す新入りが入ってきたら、 それこそ大迷惑だ。 >>791のえいぎょうのアレは赤っ恥ですめばいいけど。発注元からみると、 大丈夫かこの営業さんと思ったに違いない。 という燃料を補給してみた。
- 810 名前:login:Penguin mailto:sage [2008/03/22(土) 20:29:32 ID:ldkQa/0V]
- まぁ派遣は大変だよな。ガンガレ。
- 811 名前:login:Penguin mailto:sage [2008/03/22(土) 21:23:56 ID:I+OQFn9y]
- >>797
つまり春奈と偽春奈で仕事をすると。
- 812 名前:login:Penguin mailto:sage [2008/03/22(土) 21:25:26 ID:ldkQa/0V]
- >>810だが、今見たら言い方が悪かった。なんだか煽っているようにもとれるかもな。
すまんかった。そういう意味じゃなくて、今時、派遣ぽい職場の人は技術職まで そんな感じになってきて大変だと思う。漏れにも似たような経験あるからさ、 マジ、ガンがって欲しいと思ってる。 言われたのと行った先で条件が違うなんてのはちょくちょくあって アホな会社にも言えなくて当人が泣きをみてしまうつーのは辛いよな。 やる気ならなんとかユニオンとかそっちに話をもってくしかないわけだが 自分の身を守るのが第一かと思うよ。 まぁここでそんなこと言っててもしょうがないわけで、そういう言い方になった。
- 813 名前:login:Penguin mailto:sage [2008/03/24(月) 00:53:04 ID:W0JgcRQd]
- 教えて先生。つーか、自分がやった時に苦労したんだけど、
プロな人はもっと簡単な方法を知ってるんじゃないかな的なお題。 ひょっとして歴代のスレで既出の可能性ありだけど許して。 ディレクトリに お宝画像(1).jpg お宝画像(2).jpg .... お宝画像(100072).jpg お宝画像(100073).jpg が入っている。ファイル名はutf8の日本語、連番はカッコ付きで 連番途中に欠番がある可能性がある。これらのファイルをすべて ero-pic000001.jpg ero-pic000002.jpg .... ero-pic100072.jpg ero-pic100073.jpg という風にリネームしたい。どうしたらいいでしょう?
- 814 名前:login:Penguin mailto:sage [2008/03/24(月) 01:03:25 ID:zratqhRJ]
- プログラミングの基礎を学べば余裕でできると思うよ
- 815 名前:login:Penguin mailto:sage [2008/03/24(月) 01:09:16 ID:1V6v3lmW]
- 実は漏れは結局Cでやったんだけどね。シェルで簡単にやるにはどうするの?
- 816 名前:login:Penguin mailto:sage [2008/03/24(月) 01:11:56 ID:BAIAfq4T]
- rename や mmv を使うかな。
- 817 名前:login:Penguin mailto:sage [2008/03/24(月) 01:16:04 ID:eiDHSNtl]
- perl版renameで
rename '/\d+/ and $_=sprintf(q{ero-pic%06d.jpg}, $&);' お宝画像*.jpg とか?
- 818 名前:login:Penguin mailto:sage [2008/03/24(月) 01:23:02 ID:RkCnK2Rz]
- ls > file_list.txt して中身を
mv "お宝画像(1).jpg" "ero-pic00001.jpg" とかに変えて sh file_list.txt するかな
- 819 名前:login:Penguin mailto:sage [2008/03/24(月) 02:17:54 ID:QVIn50Y1]
- >>816
mmvというのは? うちにはないみたいだけど。 >>817 perl版renameというのは普通のrenameとは違いますよね?多分。 >>818 基本的にはその方法を用いましたが、 > mv "お宝画像(1).jpg" "ero-pic00001.jpg" とかに変えて ここがエディタでも番号を取り出す文字列操作を伴うマクロかなにかを使う必要があるわけです。 10000行以上あるので手動では無理ですし。私はCでやりましたが。 やっぱそもそも結構めんどくさいことだったんですかね。 なんか簡単そうな感じはするんだけど。
- 820 名前:login:Penguin mailto:sage [2008/03/24(月) 02:39:44 ID:sKYr6YWg]
- Perl版renameといえばラクダ本に載っている正規表現でリネームパターンを
指定できるスクリプト(使い方は>>817)のこと。
- 821 名前:login:Penguin mailto:sage [2008/03/24(月) 02:44:18 ID:xdVA6Pwk]
- >>820 導入するには?
- 822 名前:login:Penguin mailto:sage [2008/03/24(月) 02:50:59 ID:RkCnK2Rz]
- >>819
でも、正規表現使ったら5回くらいの置換でいけるから、 それでやっちゃうなぁ。俺だったら vi で :%s/.*\(.[0-9]\).*/ero-pic0000\1.jpg/gc :%s/.*\(.[0-9]{2}\).*/ero-pic000\1.jpg/gc みたいな感じで 自信ないけど
- 823 名前:login:Penguin mailto:sage [2008/03/24(月) 02:56:32 ID:NZTM56J5]
- >>822
> :%s/.*\(.[0-9]{2}\).*/ero-pic000\1.jpg/gc これダメっぽいような? あと「お宝動画」は例えばの例でどうかわかんないけど 日本語大丈夫かしら?
- 824 名前:login:Penguin mailto:sage [2008/03/24(月) 02:57:54 ID:BAIAfq4T]
- perl-rename のGTK版見付けた。
gprename しかしprel-renameみつからない・・・
- 825 名前:login:Penguin mailto:sage [2008/03/24(月) 03:00:27 ID:BAIAfq4T]
- って ubuntu のrenameはprenameだった。
- 826 名前:login:Penguin mailto:sage [2008/03/24(月) 03:07:10 ID:NZTM56J5]
- >>824
さんきゅ。これ? https://sourceforge.net/project/showfiles.php?group_id=40094&package_id=32230 あとひょっとしてPerl版renameって $ perl -e '{ rename "old-filename", "new-filename";}' みたいな話なのだろうか?(↑はちゃんと動くようだけど)
- 827 名前:login:Penguin mailto:sage [2008/03/24(月) 03:08:54 ID:eiDHSNtl]
- debianのperlのパッケージに標準で含まれてるのよ
- 828 名前:login:Penguin mailto:sage [2008/03/24(月) 03:17:40 ID:/I27eUR4]
- 今思いついたのだが、ひょっとしてスクリプトで
#!/usr/bin/perl rename old-filename, new-filename; みたいな話とか?なるほどそれならいけそだけど。
- 829 名前:login:Penguin mailto:sage [2008/03/24(月) 03:20:03 ID:sKYr6YWg]
- Perl版renameはこんな感じのスクリプト
$op = shift; foreach (@ARGV) { $was = $_; eval $op; die $@ if $@; rename($was, $_) unless $was eq $_; }
- 830 名前:login:Penguin mailto:sage [2008/03/24(月) 04:12:10 ID:dtyI9N0m]
- >>813
あえてシェルスクリプトで書くのならこんな感じかな。 #! /bin/bash for file in "$@" ; do num=${file#*(} num=$( printf '%06d' "${num%)*}" ) mv "$file" "ero-pic${num}.jpg" done bashism が嫌いなら sed に置き換えれば /bin/sh でも動くんじゃないかな
- 831 名前:login:Penguin mailto:sage [2008/03/24(月) 06:30:29 ID:bi7lOxG6]
- zshだが許せ。
for n in {1..100073}; mv お宝画像($n).jpg ero-pic`printf %06d $n`.jpg
- 832 名前:login:Penguin mailto:sage [2008/03/24(月) 10:57:24 ID:62iD1Dht]
- >>817 >>820 >>827 >>829
>>826=>>828だけど、ええとそれってシェルスクリプトで使えるの? /usr/bin/rename が置き換えられているとか? どうなっているんだろう。 >>830 うちでは動かないようだ。 日本語が混じるとためかな。あとかっことか。 で結局こうやったのだけど。 $ls | sed s/.*\(//g | sed s/\).*//g | awk '{printf("mv \"お宝動画(%d).jpg\" \"ero-pic%06d.jpg\"\n",$1,$1)}' | sh 前やったときはawkの代わりにcのプログラムでやってた。まぁawkでも同じか。
- 833 名前:login:Penguin mailto:sage [2008/03/24(月) 10:57:58 ID:62iD1Dht]
- >>831
zshって便利そうだね。
- 834 名前:login:Penguin mailto:sage [2008/03/24(月) 22:35:08 ID:7MP5JU0g]
- >>813
いろんなやり方があるけど、スクリプト内でいきなりmvなりrenameして 失敗すると悲劇なので、 mv "旧いお宝画像1.jpg" "新しいお宝画像1.jpg" mv "旧いお宝画像2.jpg" "新しいお宝画像2.jpg" mv "旧いお宝画像3.jpg" "新しいお宝画像3.jpg" mv "旧いお宝画像4.jpg" "新しいお宝画像4.jpg" mv "旧いお宝画像5.jpg" "新しいお宝画像5.jpg" mv "旧いお宝画像6.jpg" "新しいお宝画像6.jpg" (以下略) みたいに一旦テキストに落として、それざっと眺めてからshで流しなおしたほうが良いよ。 以前、 mv "旧いお宝画像1.jpg" "新しいお宝画像1.jpg" mv "旧いお宝画像2.jpg" "新しいお宝画像1.jpg" mv "旧いお宝画像3.jpg" "新しいお宝画像1.jpg" mv "旧いお宝画像4.jpg" "新しいお宝画像1.jpg" mv "旧いお宝画像5.jpg" "新しいお宝画像1.jpg" mv "旧いお宝画像6.jpg" "新しいお宝画像1.jpg" (中略) mv "旧いお宝画像1000.jpg" "新しいお宝画像1.jpg" ってやっちゃった(´・ω・`)
- 835 名前:login:Penguin mailto:sage [2008/03/24(月) 23:31:47 ID:If29/JKD]
- >>798
なんて頭の悪い…
|

|