トップページ⇒linux
988コメント336KB

シェルスクリプト総合@LINUX Part3

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin2007/07/10(火) 23:17:13ID:qGthZdME
UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。

初めての自作スクリプト、自信ないから見てください。な初心者から
トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで
いろいろな人に参加して頂けると嬉しいです。

perlやらPythonやらの話が混ざっても良いんでない?

【sed】シェルスクリプト総合@LINUX Part2【awk】
http://pc11.2ch.net/test/read.cgi/linux/1154578200/
http://pc8.2ch.net/test/read.cgi/linux/1121994321/

>>2-5あたりに色々と。
0730login:Penguin2008/02/28(木) 20:37:03ID:VzdvBwjj
吐きそうだ。
字下げを知らないやつがまだこの世にいたのか。
0731login:Penguin2008/02/28(木) 20:53:53ID:k7I0oIXn
>>730
じゃあお手本をちょっと見せてくれ
0732login:Penguin2008/02/28(木) 22:39:21ID:VzdvBwjj
死ぬまで>>729記法で頑張りゃいいんじゃね?
それも個性だ。
0733login:Penguin2008/02/28(木) 22:40:23ID:gxJgMbC8
敗北宣言はええ
0734login:Penguin2008/02/29(金) 00:47:32ID:1XKkNNaQ
2ch に貼る時気をつけないと空白スペース詰められちゃうよね
0735login:Penguin2008/02/29(金) 01:30:01ID:Pgw8LnNi
そこで 
0736login:Penguin2008/02/29(金) 01:41:57ID:bnE90VmD
行末にタブがある行を検索しようと
egrep '\t$'
としてもマッチしません。awkだと
awk '/\t$/'
でマッチするのですが、grepだとどう書けばいいのでしょうか?
0737login:Penguin2008/02/29(金) 01:59:08ID:Pf9U77bc
元々、\tなどのメタキャラクタはgrepにもawkにもなかった。
GNU awkがPerlの影響を受けて拡張しただけ。
0738login:Penguin2008/02/29(金) 02:10:07ID:bnE90VmD
そうなのかー・・・ちょっとしょぼーん。拡張されてもいい感じなんだけどね。
grep sed awk ぐらい正規表現は統一して欲しかったorz
0739login:Penguin2008/02/29(金) 08:36:03ID:qSBWA6nK
タブを¥tと書きたかった理由が
シェルからコマンドラインにタブを打とうとして補完機能に取られるから、
であれば、Ctrl-V TAB でたぶんOK。

0740login:Penguin2008/02/29(金) 09:40:38ID: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でも構いません。宜しくお願いします。
0741login:Penguin2008/02/29(金) 09:42:18ID:/PNY/URb
>>740
ぱっと思いついたもの。

( echo 'scale=2' ; paste -d/ text1.txt text2.txt ) | bc
0742login:Penguin2008/02/29(金) 09:48:46ID:HrPH8ECW
>>741
早速ありがとう御座います。こんな結果になりました。

.33
.50
.05
(standard_in) 5: parse error
53
4
5

pasteってこういうときにも使えるんですね。
parse errorとかbcとか知らないものも調べてみます。
07437402008/02/29(金) 09:58:48ID:HrPH8ECW
>>741
すいませんでした、エラーは自分の不備によるものでした。
きちんと結果表示されたので満足しています。ありがとう御座いました。
0744login:Penguin2008/02/29(金) 10:03:24ID:Mcdovrgg
スクリプトで2台のDebian間を rcp でコピーしようと思っています。
expect を使って、スクリプトを作成し、それがうまく動作するところまでは
こぎつけたのですけれど、cronに登録すると動かなくなってしまいます。。。。

どうすれば解決するでしょうか?アドバイスをいただけると嬉しいです。

ちなみにスクリプトは
==========================-
#!/bin/sh

expect -c "
set timeout 20
spawn rcp -r {コピー元} {コピー先}
expect sword:\ ; send \"{パスワード}\r\"
"
==============================
こんな感じです。

ご教授のほどよろしくお願いします。



0745login:Penguin2008/02/29(金) 10:04:13ID:/PNY/URb
>>744
カレントディレクトリがどこになってるのか、とか
権限に問題はないか、とか。

つーか rsync あたり使った方が楽じゃない?
0746login:Penguin2008/02/29(金) 17:16:24ID: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です。
0747login:Penguin2008/02/29(金) 17:21:26ID:/PNY/URb
>>746
いまいちやりたいことがわからん。
5行くらいのファイルで例示してみてくれ。

しかし join なんて使ったことないな。
そんなん知らなくても実務ではまったく困らん。
perl かなんかで書く勉強でもした方が役に立つよ。
0748login:Penguin2008/02/29(金) 17:52:51ID: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は全く無知なのでシェルで済ませたいんです。
07497462008/02/29(金) 18:07:44ID:HrPH8ECW
自己解決したわけではないのですが、やっぱり精度の問題みたいです・・・。
>>748の join1.txt と seq 150 200 > seq1.txt でjoinコマンドを使ってみたら結合できましたが
>>748の join1.txt と seq 1 2000 > seq2.txt でjoinコマンドを使ってみたら1つも結合出来ませんでした。
何か他の工夫で切り抜けたいと思います・・・失礼しました。
0750login:Penguin2008/02/29(金) 21:29:21ID:d0BiI2Kq
>FILE1 と FILE2 は実行前に join フィールドの昇順にソートしておかなければならない(数値順のソートはだめ)。
だとさ。


0751login:Penguin2008/03/01(土) 06:54:44ID:+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」が出るのでしょうか?
0752login:Penguin2008/03/01(土) 07:04:36ID:5EZ+WSHA
変数が入ってると{}って展開されないんじゃね?
0753login:Penguin2008/03/01(土) 10:33:04ID:t3ZBWfKh
x=29
echo {1..$x}
してみようぜ。
07547512008/03/01(土) 17:46:18ID:IgLZSOLf
>>752-753
{1..29}

・・・ってことは、{1..29}そのものを探す=「No such file or directory」
ってことでしょうか?

ということは、pre_month_daysの文だけfor文で回して、
$temp_textにためていってから、解析プログラムに引き渡すと今思ったのですが、

この$temp_textというのは、シェルスクリプトが終了したときには、
消えてなくなるのでしょうか?どこかに残っているものなのでしょうか?
$temp_textだと、120万行ぐらいあるので、どこかに残っていれば圧迫しかねませんし・・・。
07557512008/03/01(土) 19:12:07ID:IgLZSOLf
す、すいません、
bashのfor文ってわけわかりません、( )とか{ }とか使うと思っていたのですが・・・。


zcat /var/log/maillog.$x.gz >> $temp
を繰り返して、

引き渡しプログラム $tempとしたいのですが、
for文(他のやり方もある?)をどう使えばいいのでしょうか?
0756login:Penguin2008/03/01(土) 19:37:33ID: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
とか。
0757login:Penguin2008/03/01(土) 20:11:24ID:quX+uZMv
bash なら
for (( i = 0; i < 10; i++ )); do
echo $i
done
みたいな C っぽい for 文も使える。
07587512008/03/01(土) 20:32:55ID: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 (正体の)あいまいな;紛らわしい;はっきりしない, ぼんやりした, もうろうとした, おぼろげな

0759login:Penguin2008/03/01(土) 20:49:48ID:pGgAUYn5
temp=""

書き込み先がないじゃんか。

temp=nulpo.txt

とか書き込み先がないと。
07607592008/03/01(土) 21:51:32ID:IgLZSOLf
い、いけました。
1ヶ月のメールログ1.4GBを食わせることができました。
ありがとうございます。
0761login:Penguin2008/03/01(土) 22:39:09ID:pGgAUYn5
>>760

最初の>751をよく見てなかったんだけど、maillog.*がそんなに多くない(毎月かならず1〜29になっている、てので)なら

for file in `ls /var/log/maillog.*`
do
zcat $file | 処理プログラム
done

でいいのでは。

それと焦って名前欄間違えないように〜w
07627602008/03/01(土) 23:08:45ID:IgLZSOLf
あぅ、すいません。
logrotateはdailyの120でcompressなんです。
で、月次解析なんで、

その日の前日の「日にち」を取って、
zcatしなくちゃならなかったんです。

でも、これで月次の解析ができます〜
0763login:Penguin2008/03/02(日) 03:30:36ID:b0TlSvfI
いい流れた
0764login:Penguin2008/03/02(日) 22:17:28ID: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 $?
##
0765login:Penguin2008/03/03(月) 09:55:39ID:4ARrqAXS
括弧はいらないね
0766login:Penguin2008/03/03(月) 13:44:09ID:WtSCj+5U
>>751
eval zcat /var/log/maillog.{1..$pre_month_days}.gz | 引き渡し先プログラム
0767login:Penguin2008/03/03(月) 23:36:12ID: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 "http://hoge.piyo/" "Opera/9.25 (X11; Linux i686; U; ja)"
1リクエストに対して1行記録され、日付毎にファイルがある。(ファイル名の例:access_log_20080227)

465日分で容量2.5GB超とちょっと多いです。
やりたいことは項目別のランキングをテキスト出力だから、スクリプト自体は簡単そう
0768login:Penguin2008/03/03(月) 23:43:14ID:Zrc2Vdg0
それはanalogとかでできないものでしょうか(´-`)
0769login:Penguin2008/03/03(月) 23:46:01ID:5ghxiELA
>>768
実はそんな気がしてた
ありがとう('`)〜♪
0770login:Penguin2008/03/04(火) 00:34:34ID:61UoHuE3
ウワー早い
2分ちょいでこれだけ解析できるのかー
ああでも肝心なRefererランキングが出てないわ
Analogスレは4ヶ月近く誰も居ないみたいだしドウシタモンダカー
0771login:Penguin2008/03/04(火) 09:48:48ID:kUaxbjJj
Bashを使ってシェルスクリプトの練習をしています
ファイルに特定の文字列が記載されていたら処理を分岐させるというシェルを書きたいと思っているのですがなかなか上手くいってくれません
何かいい方法がありましたら教えていただけないでしょうか

やりたい事はファイル内にHTMLという文字列が入っていたらAの処理 入っていなかったらデフォルトの処理をしたいと考えたので
下記のようにしてみました

TMP=`cat $YEAR$MONTH$DAY.csv |grep HTML`;
echo $TMP
case "$TMP" in
HTML)echo "HTML file"
;;
*) echo "##################"
esac

0772login:Penguin2008/03/04(火) 09:54:01ID:oWYbuV9h
>>771
if grep HTML "$YEAR$MONTH$DAY.csv" >/dev/null; then
echo "HTML file"
else
echo "##################"
fi
0773login:Penguin2008/03/04(火) 14:33:52ID:kUaxbjJj
>>772
ありがとうございます
教えていただいた通りにやったら問題なくできました

なぜcat|grepのときは上手くできなくて
grepの時は問題なくできるのかがちょっと分からないのですが
いろいろ調べてみようと思います


0774login:Penguin2008/03/04(火) 21:04:44ID:rsD9V5Zj
HTML) を *HTML*) としてみようぜ。

0775login:Penguin2008/03/04(火) 23:06:20ID:VrfR3qUe
>>774
やだよ
0776login:Penguin2008/03/05(水) 00:05:43ID:EV9xTscM
grep -q を使わないのはポータビリティー重視だから?
0777かね ◆CHAS.7AvVo 2008/03/05(水) 10:22:08ID:JQ4a1dor?2BP(158)
>>777ゲット
0778login:Penguin2008/03/10(月) 18:08:47ID: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の項目を貼り付け
というような機能を持たせることはできるのでしょうか?
0779login:Penguin2008/03/10(月) 19:47:47ID:PtxOKuxD
ed
0780login:Penguin2008/03/11(火) 02:26:04ID:3Mwu+R1S
>>778
スクリプトに慣れた人ならすぐに作れる。
0781login:Penguin2008/03/12(水) 23:51:51ID:wAPdko8t
>>780
?
0782login:Penguin2008/03/13(木) 22:58:09ID:A7XLS93G
>>781
!
0783login:Penguin2008/03/13(木) 23:17:56ID:SoJCaJfU
ああ、無情
0784login:Penguin2008/03/14(金) 00:22:41ID:XhBWUHl1
シログミガンバレ
0785login:Penguin2008/03/18(火) 03:16:13ID:TPZ/j5Uw
basenameが第二引数を取ることを今知った。
0786login:Penguin2008/03/20(木) 22:15:42ID:N/tKbDY7
echo hoge=1で代入、表示両方できる知った件
0787login:Penguin2008/03/21(金) 00:14:20ID:jeNVffRp
>>786
$ echo hoge=1
hoge=1
$ echo x"$hoge"x
xx

bash 2.05b@debian ではできないぞ。
環境を教えてくれ。
0788login:Penguin2008/03/21(金) 01:11:50ID:3ULYcj2H
そんなのできたら困る。
0789login:Penguin2008/03/21(金) 01:53:30ID:Mk2nPfge
>>539
>>537 最近はGUIの環境もシェルと呼んだりするらしいしね.
>ところで,シェルスクリプトをシェルと略す感覚が信じられない
>.せめてスクリプトのほうを残すべきじゃないのか,意味的に…

javascriptをjavaって呼ぶ奴おおいし、むきになんなよ
ちっせーな、何度も何度も
0790login:Penguin2008/03/21(金) 03:00:16ID:tzWxNirH
>>789
javascriptとjavaだって別物じゃねーか
まったく別の意味にとられる表現は避けるべきだろ。
0791login:Penguin2008/03/21(金) 03:26:20ID:yp4cACqr
javaの開発と言われて行ってみたら、javascriptの案件だった……

経験者を求めていた筈なので確認をとったら速攻で別案件に回されたけど。
(だれがどこでまちがったのかはしらない。たぶん、えいぎょうのアレがマタやらかしたんだろうけど)
0792login:Penguin2008/03/21(金) 18:28:30ID:dmCthI0s
>>789
無能丸出しだな。
0793login:Penguin2008/03/22(土) 00:13:19ID:/5OR7tiw
そうだよね、文字の"あ"を"い"って発音してもいいじゃん?
0794login:Penguin2008/03/22(土) 06:15:29ID:EkMxwp6R
>>792
頭の構造が粗雑なんだろうね。
しかし無能とは決めつけられないよ。土方としては有能かも知れないじゃないか。
0795login:Penguin2008/03/22(土) 13:14:51ID:I+OQFn9y
>>794
井の中の蛙、大海を知らず。
0796login:Penguin2008/03/22(土) 14:00:07ID:4xBJlBA7
javascriptをjavaと呼ぶ井戸の外の世界
0797login:Penguin2008/03/22(土) 14:23:40ID:79XeAASw
もうすべて「あれ」と「あれ以外の何か」でいいんじゃね?

「この開発にはあれが必要だな」
「そうですね、あれも必要です」
「あれのほうはどうだ」
「あれはあれ以外のあれでやりましょう」
「あれはあれだったからな」

募集要件にはエスパー希望と書けば何も問題ない。
0798login:Penguin2008/03/22(土) 14:25:08ID:ldkQa/0V
残念なことにハードディスクドライブをハードと略すおっさんを結構見かけるのがリアル世の中なのねん。
javascriptをjavaと呼んじゃうおばちゃん、ねーちゃんだってざらにいるよ。
どっちかというと>>789のほが常識的な気がす
0799login:Penguin2008/03/22(土) 15:16:06ID:OrPubXKD
>>789
perlスクリプトをPerlと呼んだりPerlでやると言ったり
awkスクリプトをawkと読んだりawkでやると言ったり

それと同じでは
0800login:Penguin2008/03/22(土) 16:27:56ID:5bvfNtQw
省略したら同種の別の言葉になるかどうかだな。
0801login:Penguin2008/03/22(土) 16:38:49ID: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のほが同意できる。聞き上手って言葉があるじゃない?
0802login:Penguin2008/03/22(土) 17:33:00ID:/5OR7tiw
でだ、>>539がシェルスクリプトをシェルと略さずにせめてスクリプトと略しゃ
いいだけじゃねーかと建設的な提案をしたのに、他の軽量プログラミング言語
までもちだし、略した言葉を受け取った人間の能力の問題じゃね?
となるこのスレの流れに、思わず小岩井ミルクコーヒーを噴いた。

>>791の様に読解および対話能力が備わってないと、悲惨な状況のド真中に
パラシュート降下させられる奴がわんさかでそうだ。単語の略し方の問題で。
0803login:Penguin2008/03/22(土) 18:27:12ID:g5kThUF3
>たしかにシェルとシェルスクリプトは別物だしjavaとjavascripは別物だし、
>>800の言う通り、
シェル・スクリプトをシェルと呼んでも文脈から意味は通じるが、
javascriptをjavaと呼んでしまうと別のものを指してしまう。
混同するな。
0804login:Penguin2008/03/22(土) 19:12:09ID://sUM775
WikipediaをWiKiとかね。
0805login:Penguin2008/03/22(土) 19:20:26ID:ldkQa/0V
では、世の間違いをどこまでも正していってくれ。
思い浮かべて欲しい世の人々は道の傍らでJavaとJavascriptの違いを
切々と説く君たちに聖者が来れり、天国は来れりと歓喜することであろう。

が、まぁ少なくとも営業の彼と経理の彼女、はす向かいの鈴木さんに
今後一切飲みに誘われなくなるのは間違いと思うけどね。
0806login:Penguin2008/03/22(土) 19:26:48ID://sUM775
>>805 は啓蒙活動を自粛するようです。
0807login:Penguin2008/03/22(土) 19:39:22ID:pZoAGsoS
モヒカン族と村人ですから
0808login:Penguin2008/03/22(土) 19:39:41ID:d90KTFFK
>>805
さっさと氏ね
0809login:Penguin2008/03/22(土) 20:07:27ID:/5OR7tiw
>>805
AとBは異なるという説明し、その異なりを無視して同一のもととして扱うと
余計なコストが発生するから、次からはきちんと区別してくれという依頼が
出来ない風土、もしくは、意思決定にかかわる情報を扱うやつが説明しても、
その異なりを理解できないなら、そんな会社つぶれるだろ常考。

また、痛いレスみてJavaとJavascriptも区別して話す新入りが入ってきたら、
それこそ大迷惑だ。

>>791のえいぎょうのアレは赤っ恥ですめばいいけど。発注元からみると、
大丈夫かこの営業さんと思ったに違いない。

という燃料を補給してみた。
0810login:Penguin2008/03/22(土) 20:29:32ID:ldkQa/0V
まぁ派遣は大変だよな。ガンガレ。
0811login:Penguin2008/03/22(土) 21:23:56ID:I+OQFn9y
>>797
つまり春奈と偽春奈で仕事をすると。
0812login:Penguin2008/03/22(土) 21:25:26ID:ldkQa/0V
>>810だが、今見たら言い方が悪かった。なんだか煽っているようにもとれるかもな。
すまんかった。そういう意味じゃなくて、今時、派遣ぽい職場の人は技術職まで
そんな感じになってきて大変だと思う。漏れにも似たような経験あるからさ、
マジ、ガンがって欲しいと思ってる。
言われたのと行った先で条件が違うなんてのはちょくちょくあって
アホな会社にも言えなくて当人が泣きをみてしまうつーのは辛いよな。
やる気ならなんとかユニオンとかそっちに話をもってくしかないわけだが
自分の身を守るのが第一かと思うよ。
まぁここでそんなこと言っててもしょうがないわけで、そういう言い方になった。
0813login:Penguin2008/03/24(月) 00:53:04ID:W0JgcRQd
教えて先生。つーか、自分がやった時に苦労したんだけど、
プロな人はもっと簡単な方法を知ってるんじゃないかな的なお題。
ひょっとして歴代のスレで既出の可能性ありだけど許して。

ディレクトリに
お宝画像(1).jpg お宝画像(2).jpg .... お宝画像(100072).jpg お宝画像(100073).jpg
が入っている。ファイル名はutf8の日本語、連番はカッコ付きで
連番途中に欠番がある可能性がある。これらのファイルをすべて
ero-pic000001.jpg ero-pic000002.jpg .... ero-pic100072.jpg ero-pic100073.jpg
という風にリネームしたい。どうしたらいいでしょう?

0814login:Penguin2008/03/24(月) 01:03:25ID:zratqhRJ
プログラミングの基礎を学べば余裕でできると思うよ
0815login:Penguin2008/03/24(月) 01:09:16ID:1V6v3lmW
実は漏れは結局Cでやったんだけどね。シェルで簡単にやるにはどうするの?
0816login:Penguin2008/03/24(月) 01:11:56ID:BAIAfq4T
rename や mmv を使うかな。
0817login:Penguin2008/03/24(月) 01:16:04ID:eiDHSNtl
perl版renameで
rename '/\d+/ and $_=sprintf(q{ero-pic%06d.jpg}, $&);' お宝画像*.jpg
とか?
0818login:Penguin2008/03/24(月) 01:23:02ID:RkCnK2Rz
ls > file_list.txt して中身を
mv "お宝画像(1).jpg" "ero-pic00001.jpg" とかに変えて
sh file_list.txt
するかな
0819login:Penguin2008/03/24(月) 02:17:54ID:QVIn50Y1
>>816
mmvというのは? うちにはないみたいだけど。

>>817
perl版renameというのは普通のrenameとは違いますよね?多分。

>>818
基本的にはその方法を用いましたが、
> mv "お宝画像(1).jpg" "ero-pic00001.jpg" とかに変えて
ここがエディタでも番号を取り出す文字列操作を伴うマクロかなにかを使う必要があるわけです。
10000行以上あるので手動では無理ですし。私はCでやりましたが。

やっぱそもそも結構めんどくさいことだったんですかね。
なんか簡単そうな感じはするんだけど。
0820login:Penguin2008/03/24(月) 02:39:44ID:sKYr6YWg
Perl版renameといえばラクダ本に載っている正規表現でリネームパターンを
指定できるスクリプト(使い方は>>817)のこと。
0821login:Penguin2008/03/24(月) 02:44:18ID:xdVA6Pwk
>>820 導入するには?
0822login:Penguin2008/03/24(月) 02:50:59ID:RkCnK2Rz
>>819
でも、正規表現使ったら5回くらいの置換でいけるから、
それでやっちゃうなぁ。俺だったら
vi で
:%s/.*\(.[0-9]\).*/ero-pic0000\1.jpg/gc
:%s/.*\(.[0-9]{2}\).*/ero-pic000\1.jpg/gc
みたいな感じで
自信ないけど
0823login:Penguin2008/03/24(月) 02:56:32ID:NZTM56J5
>>822
> :%s/.*\(.[0-9]{2}\).*/ero-pic000\1.jpg/gc
これダメっぽいような?

あと「お宝動画」は例えばの例でどうかわかんないけど
日本語大丈夫かしら?
0824login:Penguin2008/03/24(月) 02:57:54ID:BAIAfq4T
perl-rename のGTK版見付けた。
gprename

しかしprel-renameみつからない・・・
0825login:Penguin2008/03/24(月) 03:00:27ID:BAIAfq4T
って ubuntu のrenameはprenameだった。
0826login:Penguin2008/03/24(月) 03:07:10ID:NZTM56J5
>>824

さんきゅ。これ?
https://sourceforge.net/project/showfiles.php?group_id=40094&package_id=32230

あとひょっとしてPerl版renameって

$ perl -e '{ rename "old-filename", "new-filename";}'

みたいな話なのだろうか?(↑はちゃんと動くようだけど)
0827login:Penguin2008/03/24(月) 03:08:54ID:eiDHSNtl
debianのperlのパッケージに標準で含まれてるのよ
0828login:Penguin2008/03/24(月) 03:17:40ID:/I27eUR4
今思いついたのだが、ひょっとしてスクリプトで

#!/usr/bin/perl
rename old-filename, new-filename;

みたいな話とか?なるほどそれならいけそだけど。
0829login:Penguin2008/03/24(月) 03:20:03ID:sKYr6YWg
Perl版renameはこんな感じのスクリプト

$op = shift;
foreach (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
rename($was, $_) unless $was eq $_;
}
0830login:Penguin2008/03/24(月) 04:12:10ID: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 でも動くんじゃないかな
■ このスレッドは過去ログ倉庫に格納されています