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 あたりに色々と。
511 名前:login:Penguin mailto:sage [2008/01/26(土) 12:47:23 ID:NixStw3D] >>509 もう少しヒントをください。 cat と coreutils のどちらかを使うや cat か coreutilsのどちらかを使うかや レスの意図を示していただけるとありがたいです。 シェルスクリプト歴数時間で理解が及ばなく申し訳ないです。
512 名前:login:Penguin mailto:sage [2008/01/26(土) 12:52:39 ID:K0Rp0izE] >511 ちょっとでもぐぐってみたのかと. あと猫じゃなくて切るほうな.
513 名前:login:Penguin mailto:sage [2008/01/26(土) 13:12:20 ID:NixStw3D] >>512 調べてみたのですが、広範囲になってきて混乱してきました。 今のところ cat -Tというオプションと、rtというコマンドを発見して コンソール上で du -h /home/user/file.tmp|cat -T|tr "^I/home/user/file.tmp" " " とすると、ファイル数だけ表示されるようになったので うまい方法でもないような気もしつつに #!/bin/sh filesize=('du -h /home/user/file.tmp|cat -T|tr "^I/home/user/file.tmp" " "') $filesize > ~/filesize.txt としてみたのですが $./filesize.sh ↓うまく実行できずに困っています。 du: invalid option -- T du: invalid option -- | du: invalid option -- t du: invalid option -- r 詳しくは `du --help' を実行して下さい.
514 名前:login:Penguin mailto:sage [2008/01/26(土) 13:15:18 ID:K0Rp0izE] >513 catじゃなくてcut.たぶんこれ一発でやりたいことはできると思うから調べてみな.
515 名前:login:Penguin mailto:sage [2008/01/26(土) 13:22:31 ID:NixStw3D] >>512 ,514 ありがとうございます。 素で間違えていました。 調べてみます。
516 名前:login:Penguin mailto:sage [2008/01/26(土) 13:24:02 ID:ShBosd97] stat -c %s ではだめなのか
517 名前:login:Penguin mailto:sage [2008/01/26(土) 13:43:18 ID:NixStw3D] コンソールで $ du -h /home/user/file.tmp|cat -T|cut -d ^ -f 1 としたらうまくファイルサイズだけ切り出せたので #!/bin/sh filesize=('du -h /home/user/file.tmp|cat -T|cut -d ^ -f 1') $filesize > ~/filesize.txt と、してみたのですが なにか基本的な構文がおかしいのでしょうか? バックスラッシュやシングル、ダブルクォーテーションを試してみましたが回避できません。 ↓ du: invalid option -- T du: invalid option -- | du: invalid option -- u du: invalid option -- t du: invalid option -- d du: invalid option -- f 詳しくは `du --help' を実行して下さい. >>516 ヒントありがとうございます。 調べてみます。
518 名前:login:Penguin mailto:sage [2008/01/26(土) 14:22:43 ID:/buRKO/4] >>517 これでいいだろ。 du -h /home/user/file.tmp | awk '{print $1}' > ~/filesize.txt
519 名前:login:Penguin mailto:sage [2008/01/26(土) 16:30:30 ID:NixStw3D] >>518 調べたらawkは強力で、いろいろ使えそうです。 出力も当初の予定通りで完璧でした。 ありがとうございます。 結果を変数に代入出来なくなりましたが、構文を参考に>>517 を直したら同様の出力結果で動きました。 #!/bin/sh du -h /home/user/file.tmp | cat -T | cut -d ^ -f 1 > ~/filesize.txt >>516 >>518 さんを参考に手を入れたらキロバイト表示もできました。 ありがとうございます。 ただ、数字の後ろに「k」を入れる方法が判りませんでしたが。 #!/bin/sh stat -c %s /home/user/file.tmp | awk '{printf "%s" ,$1/1024}' > ~/filesize.txt
520 名前:login:Penguin mailto:sage [2008/01/26(土) 16:43:00 ID:/buRKO/4] >>519 stat -c %s /home/user/file.tmp | awk '{printf "%sk" ,$1}' > ~/filesize.txt
521 名前:login:Penguin mailto:sage [2008/01/26(土) 23:58:52 ID:NixStw3D] >>520 応用ありがとうございます! 感謝。
522 名前:login:Penguin mailto:sage [2008/01/29(火) 13:18:07 ID:8n8HPqGB] columnコマンドがない環境でインデント合わせをしたいのですが、 何か良い方法はあるでしょうか?
523 名前:login:Penguin mailto:sage [2008/01/29(火) 15:57:53 ID:8n8HPqGB] lsコマンドで、ファイルのatimeやctimeを取得する方法はあるでしょうか。 HP環境なので、Linuxのstatコマンドがなくて途方にくれています。
524 名前:login:Penguin mailto:sage [2008/01/29(火) 16:05:29 ID:qGMFgswu] >>523 Linux の話じゃないなら板違い。
525 名前:login:Penguin mailto:sage [2008/01/29(火) 16:33:43 ID:yAbAmnAs] ファイルから目的の行を削除して上書きしたいとき, sed -e 2d file >tempfile mv tempfile file のようにすればできるんですが,テンポラリファイルを使わない方法はありますか?
526 名前:login:Penguin mailto:sage [2008/01/29(火) 16:37:12 ID:qGMFgswu] >>525 GNU sed なら -i で。
527 名前:login:Penguin mailto:sage [2008/01/29(火) 21:52:45 ID:6iHka9Si] リダイレクトとサブシェルを駆使してうまいことinplace editをやる技が あったはずなんだがどうやってぐぐればいいかわからん。
528 名前:login:Penguin mailto:sage [2008/01/29(火) 23:11:45 ID:k/ZizWnP] つ named pipe
529 名前:login:Penguin mailto:sage [2008/01/30(水) 00:25:54 ID:/azTEfDv] こんな感じのやつか? $ echo hoge > hoge $ (rm hoge; (echo fuga; cat) > hoge) < hoge 要はサブシェルに開かせておけば中で上書きしても内容は デスクリプタから参照できるからそれでin-place処理できるって奴だな。 上は手抜きだけど、どっかのFAQにデスクリプタ付け替えまくりの例題が 載ってたのだけ覚えてる。csh-whynot文書あたりかも?
530 名前:login:Penguin mailto:sage [2008/01/30(水) 00:35:03 ID:KwdpVGiV] おおう、そんなかんじだったかも。thx
531 名前:login:Penguin mailto:sage [2008/01/30(水) 20:21:01 ID:6DxEwSig] すいません ちょっと今シェルの作り方で困っているのですが やりたいことは 一つのフォルダに入っているファイルを、ファイル名によって3つのフォルダに振り分けたいのです。 その際に、どのファイルをどのフォルダに移動するのかはシェルの中に記述するのではなく、 ファイル名の一覧が書いてあるtxtファイルを一行ずつ読んで振り分けたいのです。 ですが、作り方が今いちわかりません。 例えばA,B,Cと分かれていたら 1、Aのフォルダに振り分けるファイル名が書かれたtxtファイルを読む 2、同じファイル名がヒットしたらAに送る 3、次にBのフォルダに振り分けるファイル名が書かれたtxtファイルを読む 4、同じファイル名がヒットしたらBに送る ファイル名が書かれたtxtファイルはA用B用C用の3種類用意します。 どうやって作ればいいのでしょうか?
532 名前:login:Penguin mailto:sage [2008/01/30(水) 20:36:32 ID:CiuX3/ZK] シェルの作り方なんぞ知るかい。
533 名前:login:Penguin mailto:sage [2008/01/30(水) 20:38:30 ID:0RlCwXSW] 宿題は自分でやれ。
534 名前:login:Penguin mailto:sage [2008/01/30(水) 21:41:32 ID:wmsZ0JX8] >531 testコマンドでググレカス ファイルの読み込み方すらわかんねーなら本一冊買って出直して来い
535 名前:login:Penguin mailto:sage [2008/01/30(水) 21:48:11 ID:6DxEwSig] うわー 冷たい しかも叩く時だけは一気にレスがつくんだね >>532 >>533 わからないなら無理にレスしなくていいです
536 名前:login:Penguin mailto:sage [2008/01/30(水) 22:48:33 ID:5hT959VT] さいきんの、このバカの質問な感じのには >>わからないなら無理にレスしなくていいです に類する文言が書き込まれる率が高いな、て思えるんだが、これは 1. この手のバカは結局バカだから、おなじようにしか考えられない 2. 実は同じヤツが何度も釣りに励んでいる のどちらか、ということだろうか?
537 名前:login:Penguin mailto:sage [2008/01/30(水) 22:54:16 ID:KwdpVGiV] シェルを作るのは結構高度な作業だからな。
538 名前:login:Penguin mailto:sage [2008/01/30(水) 22:59:49 ID:v0ETiHGx] >>536 真・教えて君養成マニュアルとかがどっかにあるんじゃないか?w
539 名前:login:Penguin mailto:sage [2008/01/30(水) 23:01:22 ID:sxNLHjSv] >537 最近はGUIの環境もシェルと呼んだりするらしいしね. ところで,シェルスクリプトをシェルと略す感覚が信じられない.せめてスクリプトのほうを残すべきじゃないのか,意味的に…
540 名前:login:Penguin mailto:sage [2008/01/30(水) 23:05:38 ID:j0KqLeiL] 教えてクン養成マニュアル www.redout.net/data/osietekun.html
541 名前:login:Penguin mailto:sage [2008/01/30(水) 23:39:48 ID:KwdpVGiV] >>539 GUIのシェルってのはそう最近でもないと思う。 DOSSHELLとか、X68kのVS.Xとかあったじゃないか。
542 名前:login:Penguin mailto:sage [2008/01/31(木) 00:54:52 ID:5zXcU2rl] >>531 うわーきもい。シェルを作るという表現はおかしい シェルの作り方って、VBの作り方、Javaの作り方 聞いているのと同じ。それをKY言うのは異常。 for文とifを組み合わせれてループさせれば。
543 名前:login:Penguin mailto:sage [2008/01/31(木) 05:38:28 ID:sRx07lee] >>535 >わからないなら無理にレスしなくていいです。 たぶんここの人は9割以上わかっていると思う。
544 名前:login:Penguin mailto:sage [2008/01/31(木) 05:47:16 ID:sRx07lee] やる気がおきない。 態度の豹変に腹が立つ。 mv -i `neko a.list` a mv -i `neko b.list` b mv -i `neko c.list` c
545 名前:login:Penguin mailto:sage [2008/01/31(木) 13:37:31 ID:zeMbksrC] >>544 単純にnukoするよりもls -1 | grep -f a.list とかしてより分けた方が良くないか?
546 名前:login:Penguin [2008/01/31(木) 19:50:10 ID:/M27f8ta] for 変数名 in 10 20 30 do echo $変数名 done この構文の変数名ってなんでもいいんですか? あとこれを実行すると 10 20 30 になりますよね?
547 名前:login:Penguin mailto:sage [2008/01/31(木) 20:53:32 ID:p8W84r95] >>546 変数名に使える文字は英字と数字、アンダースコアのみな。
548 名前:login:Penguin mailto:sage [2008/01/31(木) 21:07:34 ID:Ih8EaxE5] すると、うちのbashはおかしい。。。 $ for 9_var in 10 20 30; do echo $9_var; done bash: `9_var': not a valid identifier
549 名前:login:Penguin mailto:sage [2008/01/31(木) 21:49:51 ID:g7asi3X7] もしかして>>351 == >>548 なんか? こんなところで釣りなんかすんなよ... もし釣りじゃなくってバカなんだったら、せめてmanするとかググるセンセに聞くとか、な?
550 名前:548 mailto:sage [2008/01/31(木) 22:00:40 ID:m8vTasa1] その話題では>>354 だが、なぜ351と?
551 名前:login:Penguin mailto:sage [2008/01/31(木) 23:25:56 ID:g7asi3X7] >>550 う゛、勘違いとかtypoとか。いかんな、落ち着かんと。 でもってマヂレスしとくと、変数の1文字目は数字じゃダメな。
552 名前:login:Penguin mailto:sage [2008/02/01(金) 20:50:34 ID:aG/PrNJ9] kakikomi.txtというテキストファイルがあったとします。 STRING1 を含んでいて、かつ STRING2も含んでいる行だけを 印字しようとおもうのですが、 grep STRING1 kakikomi.txt| grep STRING2 くらいしか思いつきません。二度手間な気がします。 もう少しいい方法ありませんか?
553 名前:login:Penguin mailto:sage [2008/02/01(金) 20:57:02 ID:IKSH1LNN] >552 -e
554 名前:login:Penguin mailto:sage [2008/02/01(金) 21:42:25 ID:KLEwAeBF] >>552 それ前スレ(UNIX板のほうだったかも試練)で話題になったな 「STRING1とSTRING2を『順不同で』含む行をイッパツで引っ掛けようとしたら egrep '(STRING1.+STRING2)|(STRING2.+STRING1)' となってしまう。2個ならまだいいが、3個、4個...と増えていくと正規表現がキモいことになってしまう。 順不同という条件なら、>>552 のやり方が一番シンプル
555 名前:login:Penguin mailto:sage [2008/02/01(金) 22:20:29 ID:9CGaNXUy] awk '/STRING1/&&/STRING2/' kakikomi.txt とか。
556 名前:login:Penguin mailto:sage [2008/02/01(金) 23:10:27 ID:aG/PrNJ9] >>554 ,555 ありがとうございました。 最近暇なので本でいろいろ勉強してみます。
557 名前:login:Penguin [2008/02/02(土) 02:58:37 ID:jQtmOvcu] 例えばここに置いてある松金洋子のデスクトップ用壁紙画像をターゲットとする。 www.sexydesktop.co.uk/youko.htm ここには全部で4ページ分48種類の松金洋子の画像がある。 ## このサイトの画像はすべてデスクトップ用の壁紙を目的としているので、 ## 一つの画像に関して数種類の解像度・縦横比の画像が用意されており、 ## アクセスしてきた人の使っているディスプレイ解像度を検出しては、 ## 最適な解像度のものを優先的にプッシュするようになっている。 ## また、画像ファイルの命名ルールは非常に単純かつ形式的で、 ## たとえば例に挙げた松金洋子の画像の場合、 ## まず画像の名前を表す youko1 から youko48 までの48種類の画像が用意されている。 ## さらにそれぞれの解像度を表す 1280x800 や 800x600 の文字列が続き、 ## 最後に拡張子 .jpg が付けられている。 ## 注意する点があるとすると、例えば youko48 に対して youko01 だとか、 ## 1280x1024 に対して 0800x0600 といった「桁数合わせ」が一切行われていないということ。
558 名前:557 [2008/02/02(土) 02:59:35 ID:jQtmOvcu] ここから先が質問。やりたいことは、 1). サイトがプッシュしてくるこちらのディスプレイ解像度に関係なく、 すべての画像について、解像度のより大きいバージョンを、 番号の一番若いものから古いものまで全種類取って来たい。 2). その際、取って来た画像のファイル名を修正して、 youko48 に対しては youko01 、1280x1024 に対して 0800x0600 などの「桁数合わせ」をしたい。 3). さらに、ファイル名の中の画像名を表す文字列と、解像度を表す文字列とを _ で結ぶようにしたい。 具体的には、youko11600x1200.jpg と名付けられた youko1 という画像の 1600x1200 版のファイル名を、youko01_1600x1200.jpg としたい。同様に、youko481280x1024.jpg と名付けられた youko48 という画像の 1280x1024 版のファイル名を youko48_1280x1024.jpg としたい。 以上をまとめると、参考例の松金洋子の画像で言えば、 youko11600x1200.jpg から youko481280x1024.jpg までの画像を、 youko01_1600x1200.jpg から youko48_1280x1024.jpg として保存したい。 これを実現するスクリプトをどう書けばいいでしょうか? なお、好みのタレントの画像が何種類用意されているか(松金洋子の場合は48種類)については、 ダウンロードを開始する前に手作業で調べることとします。
559 名前:login:Penguin mailto:sage [2008/02/02(土) 03:11:26 ID:BYWZpRq/] >>557-558 まずお前が考えて出来たスクリプトをうpしろ 話はそれからだ
560 名前:557-558 [2008/02/02(土) 03:17:30 ID:jQtmOvcu] んー、俺はスクリプトに無知だから、一から十まで全部取って来て、 後で手作業で仕分けする、みたいな超バカなことしかできんのです。 だからエロい人に教えてほしいんです。。 ダメならヒントだけでもいいので下さい。
561 名前:login:Penguin mailto:sage [2008/02/02(土) 03:19:54 ID:BYWZpRq/] >>557-558 ほらよ っ google.co.jp
562 名前:login:Penguin mailto:sage [2008/02/02(土) 07:40:21 ID:QLk1rUEb] 地道にループ回すしかないのでは たぶんリネーム関連はperlか何か使ったほうがラクじゃね?
563 名前:login:Penguin mailto:sage [2008/02/02(土) 08:38:47 ID:VQl51rL6] 2).3). youko0123456789x0123456789.jpg というファイル名はどのように整形すれば?
564 名前:login:Penguin [2008/02/02(土) 10:16:29 ID:2Gx0/Giv] $cat test.txt aaaaaaaaaaaaaaaaaaaaaaaaaa +bbbbbbbbbb cccccccccccccccccccccccc +ddddddddddddddd 長い行は先頭に+をつけて折り返しているという内容のファイルを $cat test.txt aaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbb cccccccccccccccccccccccc ddddddddddddddd というように+の折り返しを前の行の後ろに空白付で結合させるにはどうすればいいでしょう?
565 名前:login:Penguin mailto:sage [2008/02/02(土) 10:19:50 ID:QLk1rUEb] cat test.txt | tr '\n+' ' 'とかどう?
566 名前:login:Penguin mailto:sage [2008/02/02(土) 10:34:51 ID:2Gx0/Giv] >>565 実行したら $cat test.txt aaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbb cccccccccccccccccccccccc ddddddddddddddd みたいになりましたが $cat test.txt aaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbb cccccccccccccccccccccccc ddddddddddddddd これが出力としてほしいです。 \nと+が別で判断されているのでしょうか・・・
567 名前:login:Penguin mailto:sage [2008/02/02(土) 10:37:11 ID:QLk1rUEb] 間違った.cat test.txt | tr '\n\+' ' 'で.
568 名前:login:Penguin mailto:sage [2008/02/02(土) 10:39:50 ID:QLk1rUEb] ごめん,俺嘘ばっかり言ってるから気にしないでorz
569 名前:login:Penguin mailto:sage [2008/02/02(土) 10:41:24 ID:2Gx0/Giv] >.567 同じ結果でしたw レスありがとう!
570 名前:557-558 [2008/02/02(土) 10:50:34 ID:jQtmOvcu] >>563 どうもです。 えー、そういう名前のファイルは存在しないので考えてもみませんでした。 >>562 もし $name$no1024x768$suffix がある時 $name$no1024x0768$suffix にせよ、 みたいなことを延々とやる、ということなんでしょうか?(←無知) うーん。。。
571 名前:login:Penguin mailto:sage [2008/02/02(土) 11:02:51 ID:jHuzpaac] >>564 if 先頭が+じゃない then echo "" else echo -n " " fi echo -n 行
572 名前:login:Penguin mailto:sage [2008/02/02(土) 12:30:06 ID:A3vIBKBi] >>564 sed 'N;s/\n+/ /;t;P;D'
573 名前:login:Penguin mailto:sage [2008/02/02(土) 14:09:27 ID:2Gx0/Giv] >>572 ありがとうございます!!
574 名前:login:Penguin mailto:sage [2008/02/05(火) 19:10:25 ID:E60rvXpx] /tmpにあるディレクトリをリストし そこからディレクトリ名だけを切り取りたいと考えています。 /tmpには a b c というディレクトリがあるとして $ find /tmp -type d -maxdepth 1 -mindepth 1 | xargs awk -F/ '{print $NF}' を実行すると a だけが出力されてしまいます。 望んでいる出力は a b c なのでうまく出力されるようにしたいです。 findのみを実行すると /tmp/a /tmp/b /tmp/c と出力されることは確認しました。 申し訳ないのですが良い方法をご教授ください。
575 名前:login:Penguin mailto:sage [2008/02/05(火) 19:18:42 ID:DHgW4Gk4] find /tmp -maxdepth 1 -mindepth 1 -type d | awk -F/ '{print $NF}' find /tmp -maxdepth 1 -mindepth 1 -type d | sed -e 's/.*\///' find /tmp -maxdepth 1 -mindepth 1 -type d -exec basename {} \;
576 名前:574 mailto:sage [2008/02/05(火) 19:21:21 ID:E60rvXpx] >>574 で実行したコマンドは $ find /tmp -type d -maxdepth 1 -mindepth 1 | xargs echo | awk -F/ '{print $NF}' の間違いでした。 よろしくおねがいします。
577 名前:574 mailto:sage [2008/02/05(火) 19:22:58 ID:E60rvXpx] >>575 望みどおりの出力を得ることができました! 早い回答感謝します。 ありがとうございます。
578 名前:login:Penguin mailto:sage [2008/02/06(水) 21:11:41 ID:Qs2nEtFk] すみません、次の表現ってどういう意味なんでしょうか ($Fはlsの結果が入る) if expr "$F" : '[[:alunum:]_-]\+$' > /dev/null 2>&1; then ... 特に : '[[:alunum]_-]\+$'の箇所が分かりません 自分で調べて分かったのは [:alunum:]が数値を表すPOSIX準拠の文字クラスであること :はヌルコマンド []が正規表現とすると[[:alnum:]_-]\+$は以下のいずれかという意味でしょうか 数値+$ _+$ -+$ だとしても前半の:とのつながりもよく分からないです..
579 名前:login:Penguin mailto:sage [2008/02/06(水) 21:39:32 ID:2Q3KS/FB] そのコロンはexpr の引数であって、パターンマッチを行わせるもの。 ヌルコマンドではない。 [[:alnum]]_-]¥+$ は、 「英数もしくは _ もしくは -」([[:alnum]]_-])の繰り返し(¥+)で末尾になる($)パターン。 つまり$Fが↑のパターンにマッチするかで判断するif文だな。 出力を/dev/nullに捨てている理由は、exprの動作を調べればわかる。
580 名前:login:Penguin mailto:sage [2008/02/06(水) 22:12:35 ID:Qs2nEtFk] >>579 ありがとうございます。やっと理解できました! exprについては、nullまたは0を返した際に0を返すという仕様のため /dev/nullに出力していることはすぐ分かったんですが 「:」もexprの構文だったんですね ずっとシェルのパターンマッチの構文として「:」を調べていたため ハマってました,thx!
581 名前:login:Penguin mailto:sage [2008/02/07(木) 17:29:04 ID:SojUAx7O] リダイレクトで先頭5行目から行末から5行目前までを出力したいのですが、 ??? | head -n xx | tail -n xx 以外に良い方法はあるでしょうか
582 名前:login:Penguin mailto:sage [2008/02/07(木) 18:31:29 ID:K+RTjMO0] なにをしたいのか、君の示した例は本当に目的を満足してるのか、 もういちど確認した方がよいと思われ
583 名前:login:Penguin mailto:sage [2008/02/08(金) 08:15:13 ID:D8JF1iVI] では、headとtailは使わずに。 sed -n '5,$p' file.txt | tac | sed -n '5,$p' | tac …意義が見出せない。。。
584 名前:581 mailto:sage [2008/02/08(金) 15:35:34 ID:aAYt8gpF] >>583 sedは習ってないので提出できないんですよ 他にないですか?
585 名前:login:Penguin mailto:sage [2008/02/08(金) 15:38:14 ID:Yg3sGZTq] >>584 白紙で出せば...
586 名前:login:Penguin mailto:sage [2008/02/08(金) 16:08:13 ID:z5e2UbEF] { read a;read a;read a;read a;tac; } | { read a;read a;read a;read a;tac; }
587 名前:login:Penguin mailto:sage [2008/02/08(金) 16:57:33 ID:rygBoGE6] 習っていないと使えないって、そんな小学校じゃあるまいし
588 名前:login:Penguin mailto:sage [2008/02/08(金) 19:53:27 ID:8gRlFmfx] >sedは習wwwwってwwないのwwwで提出でwwきないんですよww >他になwwwwいですか?www のように、wを適当にまぶすスクリプトを誰か考えてくれ。
589 名前:login:Penguin mailto:sage [2008/02/08(金) 21:34:44 ID:Z8wDJkcZ] >>588 こんなwwのを作っwwwwてみたんwwだがww どうだろうかwww とりあえずwwwwちゃんwwと動いてるよwwうだがwwww どんな例外wwがあるwwかわからんwww #!/bin/sh CHAR='w' insertw() { i=0 w=`expr $RANDOM % 3 + 2` while [ $i -lt $w ]; do i=`expr $i + 1` echo -n $CHAR done } while read LINE ;do while [ "$LINE" ]; do r=`expr $RANDOM % 6 + 2` echo -n `echo $LINE | cut -c -${r}` insertw r=`expr $r + 1` LINE=`echo $LINE | cut -c ${r}-` done echo "" done
590 名前:589 mailto:sage [2008/02/08(金) 21:45:59 ID:Z8wDJkcZ] 初心wwww者でサーセンww $RANDwwwwOM使wwってるのwwwで本wwww当のshではww動かなwwwいはずだけど,wwwここはwwLinux板wwwってことwwwで許wwwwしてもらえるwwよね?
591 名前:login:Penguin mailto:sage [2008/02/09(土) 21:05:58 ID:sA/Tx79N] あの〜、正規表現についてお聞きしたいのですが [a-z]で小文字のアルファベット全てにマッチですよね。 ならば [あ-ん]でひらがな全てにマッチしますか?
592 名前:login:Penguin mailto:sage [2008/02/09(土) 21:44:35 ID:y7ESpv1X] yes
593 名前:login:Penguin mailto:sage [2008/02/10(日) 00:32:01 ID:HzElnwAK] 「ぁ」はマッチしないのでは? それはそうと、多バイト文字の正規表現って、大抵のアプリケーションで普通に使えるものなのか。 知らなんだ。
594 名前:login:Penguin mailto:sage [2008/02/10(日) 01:02:27 ID:bq0IfXwT] 質問です。ファイルの対象部分に別のファイルを挿入するコマンドってありますか? % cat file1 aaa%sbbbccc % cat file2 ZZZ % hoge %s file2 < file1 aaaZZZbbbccc のような動作を期待しています。 挿入するファイルは少し長めなのでsedで置換ではできない気がしています。 awkあたりでfile1を%sが出るまで出力 -> file2を出力 -> file1の%s以降を出力 という方法を考えていますが、もし専門のコマンドがあれば教えてください。
595 名前:594 mailto:sage [2008/02/10(日) 01:12:39 ID:bq0IfXwT] 誤爆先でm4というのを教えてもらいました。 一旦使ってみます
596 名前:login:Penguin [2008/02/10(日) 01:14:06 ID:AyxHcvsn] そういうのはエディタで
597 名前:login:Penguin mailto:sage [2008/02/10(日) 01:52:24 ID:EflaE009] >>595 おまえFedoraすれにいなかったか?
598 名前:login:Penguin mailto:sage [2008/02/10(日) 06:29:30 ID:7q9QRaK3] >>594 printf "`cat file1`\n" `cat file2`
599 名前:login:Penguin mailto:sage [2008/02/11(月) 23:47:20 ID:wSzjm7y4] >>593 grep でやってみたらマッチしやがったよ。
600 名前:login:Penguin mailto:sage [2008/02/12(火) 02:36:00 ID:NhGbxXsu] 文字列として検索できるということと、 全角文字も一文字として扱える、というのとでは意味がぜんぜん違う。
601 名前:login:Penguin mailto:sage [2008/02/13(水) 03:57:10 ID:Z8x6psMH] [あ-ん]と[\xe4\x1c-\xe4\x5f]ではまるで別物だしな(コードは適当)
602 名前:login:Penguin mailto:sage [2008/02/13(水) 23:44:52 ID:3LjmFUst] #スレ違いだが。 MS-Windowsとの可搬性に最も富むスクリプトは何ですか? ただし、cygwin環境とperlは除外して。
603 名前:login:Penguin mailto:sage [2008/02/13(水) 23:58:15 ID:jHUDsaVW] >>602 javascriptに一票
604 名前:login:Penguin mailto:sage [2008/02/14(木) 00:56:22 ID:axFZQkw/] >>602 awk,ruby,Python つーかなんでperlダメなの? たしかにWinのperlめんどいけどね。
605 名前:login:Penguin mailto:sage [2008/02/14(木) 20:13:50 ID:oi3zsBt5] ディレクトリにあるmp3ファイルを1行に3つずつ番号付きで表示して 指定されたファイルを再生するスクリプトを考えてみました。 これだとファイル表示の見た目がいまいちなんですが、カラムを揃えて 表示するようなうまいやり方はありますか? i=1 for file in *.mp3 do #3カラムで出力する x=`expr $i % 3` if [ $x -eq 0 ] then echo -e "\033[1;31m$i\033[0m.$file" else echo -en "\033[1;31m$i\033[0m.$file " fi a[i]=$file (( i=i+1 )) done echo -n "number? >" read n if [ -f "${a[n]}" ] then mplayer "${a[n]}" else echo "ファイルがありません" fi
606 名前:login:Penguin mailto:sage [2008/02/14(木) 21:53:57 ID:gBoeKdqH] >>605 #!/bin/sh FS=`zenity --file-selection` #このままだと動画なんかもいけるけど、どうしても*.mp3のみにしたい場合は↑行を #コメントアウトして↓行を有効にする #FS=`ls *.mp3 | zenity --list --column "Files"` if [ -z "${FS}" ] then exit fi mplayer "$FS" なんつってってねw
607 名前:login:Penguin mailto:sage [2008/02/14(木) 22:01:12 ID:vsXOhty3] zenityってなんだろーと思ってググったら……反則すぎ。
608 名前:login:Penguin mailto:sage [2008/02/14(木) 22:52:41 ID:fZu2vsjD] >>604 perl.exeの他に色々MS-Windows側に入れなきゃならないものがあるので可搬性に欠けるという理由を考えてみましたが、実は嫌いなだけです。 >>605 3列にこだわらないのなら、bashのselectはどうでしょう。 #!/bin/bash select name in *.mp3 do echo "mplayer ${name}" #break done
609 名前:login:Penguin mailto:sage [2008/02/15(金) 02:46:55 ID:4QUqq28I] >>605 printf で頑張るという選択肢もある。
610 名前:605 mailto:sage [2008/02/15(金) 19:02:00 ID:BuE7cyMU] >>605 の件ですが、レスしてくれた方々、ありがとうございます。 selectを使うのが簡単でイメージどおりなので、それでいきたいと思います。
611 名前:login:Penguin mailto:sage [2008/02/16(土) 14:41:12 ID:rUKDlild] 久しぶりに来たけど相変わらず キモいね