1 名前:1様 [2009/04/03(金) 22:17:43 ID:0qFlvOW9] UNIX板のスレを見ている方も多数おられるかと思いますが、 まあそれはそれとして、BASHウゼーとか言われる心配なく 平和にLINUX的スクリプト談義しましょうよ。 初めての自作スクリプト、自信ないから見てください。な初心者から トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで いろいろな人に参加して頂けると嬉しいです。 perlやらPythonやらの話が混ざっても良いんでない? Part4 : pc11.2ch.net/test/read.cgi/linux/1210999497/ Part3 : pc11.2ch.net/test/read.cgi/linux/1184077033/ Part2 : pc11.2ch.net/test/read.cgi/linux/1154578200/ Part1 : pc8.2ch.net/test/read.cgi/linux/1121994321/ >>2-5 あたりに色々と。
263 名前:login:Penguin mailto:sage [2009/08/11(火) 17:55:36 ID:zgCywBrU] >>262 スレ違い。
264 名前:258 mailto:sage [2009/08/11(火) 18:03:42 ID:ggsX9yQb] >>263 解答ありがとうございます。 スレ違いとのことですが、これはどういったスレで質問するのがよろしいのでしょうか。 シェルスクリプトの表示だったのでこちらに投げさせていただいたのですが どういった方面のスレかだけでも助言いただけないでしょうか。
265 名前:login:Penguin mailto:sage [2009/08/11(火) 18:07:41 ID:zgCywBrU] >>264 くだらねえ質問はここに書き込め! Part176 pc11.2ch.net/test/read.cgi/linux/1246986882/
266 名前:login:Penguin mailto:sage [2009/08/12(水) 00:03:08 ID:0UM4nevW] >>263 きびしー
267 名前:login:Penguin [2009/08/12(水) 00:05:03 ID:I1tOnENr] >>264 VGAとかSVGAとか解像度で違うっての聞いたことある。 もしかしたら全然違うかもしれんがそういうときはきっと誰か激しく突っ込んでくれるはず。
268 名前:login:Penguin mailto:sage [2009/08/12(水) 00:10:31 ID:u9/Em9/R] >>267 ぜんぜん違う話。
269 名前:login:Penguin mailto:sage [2009/08/12(水) 05:02:52 ID:0UM4nevW] $ cat<<<h$(cat<<<e$(cat<<<l$(cat<<<l)o)\!)
270 名前:login:Penguin [2009/08/12(水) 14:49:33 ID:/9MBM8gW] 特定文字列が含まれてるかどうかの判断って出来ますか? sedとかで文字の置き換えとか入れ替えが出来る程度のレベルです。 dg=`route | grep '192.168.24.1'` でdgの中にug含まれているかどうかを確認したいと思ってます。
271 名前:login:Penguin mailto:sage [2009/08/12(水) 14:51:54 ID:u9/Em9/R] >>270 route | grep '192.168.24.1' | grep ug ってこと?
272 名前:login:Penguin mailto:sage [2009/08/12(水) 14:59:52 ID:LZ159q8G] >>270 case "${dg}" in *ug*) # match ;; *) # not match ;; esac
273 名前:270 [2009/08/12(水) 15:13:57 ID:/9MBM8gW] >>271 そうでした。パイプでさらにgrepすればよかったですね。 こちらの方法でも出来ました。 ありがとうございます。 >>272 判定までしていただいて助かります。 こちらの方法で出来ました。 ありがとうございます。 まだまだよくわかってないですがここで質問しなくてもすむように勉強したいと思います。
274 名前:login:Penguin [2009/08/12(水) 18:46:07 ID:jKHDnL7q] シェルスクリプトでサーバーのチェックをしてます。 それ自体はcronで定期的に行ってますが、これと併せて定期的にデータを送信出 来ればと考えてます。 実際にはチェックして引っかかったサーバーにzipを送り、サーバーは時間が来 れば勝手に実行するという感じですが、シェルスクリプトでzipデータを別サー バーに送るとかいうことが可能でしょうか。 可能ならどんな関数を使えばよいかアドバイスもらえないでしょうか。 初歩的な質問かと思いますが宜しくお願いいたします。
275 名前:login:Penguin mailto:sage [2009/08/12(水) 18:54:50 ID:8iPFdi1w] 金玉 → >>274 。゜( ゜^∀^゜)゜。アーッハハハハノヽノヽノヽノ\ / \
276 名前:login:Penguin mailto:sage [2009/08/12(水) 21:03:12 ID:0s7n/+F7] >>274 sshの鍵交換してパスワードを聞かれないようにしておいて scpなりrsyncなりで送れば良いと思う。
277 名前:login:Penguin mailto:sage [2009/08/12(水) 23:35:06 ID:tCsvaW+m] >>239 これはどう? #/bin/bash FILE=$1 OFILE=/dev/shm/hoge xargs < $FILE -n10 | tr " " "\t" > $OFILE
278 名前:login:Penguin mailto:sage [2009/08/12(水) 23:40:23 ID:tCsvaW+m] >>277 じこれす まちがった xargs < $FILE -n10 | tr ' ' \\t > $OFILE です。
279 名前:login:Penguin mailto:sage [2009/08/12(水) 23:56:35 ID:0UM4nevW] すげー
280 名前:login:Penguin mailto:sage [2009/08/14(金) 09:45:57 ID:vesWTwzQ] 変数COUNTER の値が10より小さければ MMF0009 と表示 100より小さければ MMF0099 と表示 1000より小さければ MMF0999 と表示 1000ならば MMF1000 と表示 というスクリプトをcase 文を用いてすっきり書きたくて下記の通り書きましたが、 算術式及び、case の構文の違いでしょうか間違っています、ご教示願えないでしょうか。 #!/bin/bash COUNTER=0 DIGIT3=000 DIGIT2=00 DIGIT1=0 while [ ${COUNTER} -lt 999 ] do case "$COUNTR" in `expr ${COUNTER}` -lt 10) echo "MMF$DIGIT3$COUNTER";; `expr ${COUNTER}` -lt 100) echo "MMF$DIGIT2$COUNTER";; `expr ${COUNTER}` -lt 1000) echo "MMF$DIGIT1$COUNTER";; `expr ${COUNTER}` = 1000) echo "MMF$COUNTER";; esac COUNTER=`expr ${COUNTER} + 1` done
281 名前:login:Penguin mailto:sage [2009/08/14(金) 09:56:51 ID:HEs3iRVc] >>280 manpageより case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac A case command first expands word, and tries to match it against each pattern in turn, using the same matching rules as for pathname expansion (see Pathname Expansion below).
282 名前:login:Penguin mailto:sage [2009/08/14(金) 10:03:19 ID:GRUhI9LP] こういうこと? seq -f 'MMF%04.f' 0 1000
283 名前:login:Penguin mailto:sage [2009/08/14(金) 15:19:52 ID:VHMVUNf7] >>280 すっきり書いてみた。 #! /bin/sh COUNTER="$1" DIGIT1=000 DIGIT2=00 DIGIT3=0 DIGIT4= eval 'echo "MMF${DIGIT'"${#COUNTER}"'}${COUNTER}"'
284 名前:283 mailto:sage [2009/08/14(金) 15:31:27 ID:VHMVUNf7] printfがあれば更にすっきり。 #! /bin/sh COUNTER="$1" printf 'MMF%04d\n' "${COUNTER}"
285 名前:login:Penguin mailto:sage [2009/08/14(金) 23:08:31 ID:vesWTwzQ] >>280 です 皆さんどうもありがとうございます。 C のswitch〜case構文のようなものかと勘違いし、case の使い方が全然間違ってましたし他にも細かなミスがありましたが、調べてこんな感じで期待通りの振る舞いができました case $COUNTR in ?) echo "MMF$DIGIT3$COUNTER" ??) echo "MMF$DIGIT2$COUNTER" ??) echo "MMF$DIGIT1$COUNTER" 1000) echo "MMF$COUNTER" esac それから、seq とかeval の使い方も調べて見ます、どうもありがとう。
286 名前:login:Penguin mailto:sage [2009/08/14(金) 23:17:06 ID:vesWTwzQ] >>285 です もう一つお願いします。 シェルスクリプト というのは、そのような仕組みになってるんでしょうか? 単純にインタプリタ型の言語なのでしょうか、自分としてはそうではない気がします なぜなら、sudo コマンドを使う場合、シェルスクリプトの場合、スイッチ を付加して実行しますが それは直接、カーネルに対してオペレーションしているような気がするのですが?詳しい方が居られましたら教えてください。
287 名前:login:Penguin mailto:sage [2009/08/14(金) 23:19:32 ID:vesWTwzQ] ×シェルスクリプト というのは、そのような仕組みになってるんでしょうか? ○シェルスクリプト というのは、どのような仕組みになってるんでしょうか?
288 名前:login:Penguin mailto:sage [2009/08/14(金) 23:40:04 ID:4UQz02FW] >>286 >それは直接、カーネルに対してオペレーションしているような気がするのですが? 気のせいです。 手始めにforkとかexecvとか調べたらいいんじゃね?
289 名前:login:Penguin mailto:sage [2009/08/14(金) 23:56:56 ID:cgRLII5a] インタプリタだよ。 sudoは、シェルとは別のプログラムです。 シェルスクリプト中で、シェルのビルトイン関数やらで無いコマンドを書くと、 シェルは、その名前のプログラムを探してそれを実行しようとします。 上に出てきた中で言うと、 while case echo evalはシェルのビルトイン関数(?)で seq printf sudoは外部プログラムです。 「カーネルに対してオペレーションしている」云々は、 言っている意味が良く分かりません。 全ての意味のあるプログラムは、直接的にしろ間接的にしろ、 カーネルと相互作用するはずですから。
290 名前:login:Penguin mailto:sage [2009/08/15(土) 01:56:48 ID:niIslDjl] while, case と echo, eval はくくりが別だけどな。 type while とか type echo とかやってみ。
291 名前:login:Penguin mailto:sage [2009/08/15(土) 19:58:45 ID:4JYHgxvW] >>286 です 皆さんThxです。
292 名前:login:Penguin [2009/08/15(土) 23:51:22 ID:O3QLwBfx] read packetcount read port tcpdump -n -c$packetcount -s1500 -vvv -X port $port こんな感じでパケット見てるんですが、1パケットごとに色を変えることは出来ますか? 文字色の指定方法はわかるんですが、そういった指定方法や手法があればおしえてもらえないでしょうか。 なければおとなしくあきらめます。
293 名前:login:Penguin mailto:sage [2009/08/16(日) 02:00:07 ID:kxH41sn/] >>292 色は無理。 portが読み込まれていない。
294 名前:login:Penguin mailto:sage [2009/08/16(日) 02:32:16 ID:m+r83sIL] >>292 C1="$(tput setaf 0)" C2="$(tput setaf 1)" tcpdump -n -c 10 -s 1500 -vvv -X | while IFS="" read l;do if [ "$l" = "${l#$'\t'}" ]; then echo -n "$C1" A="$C2";C2="$C1";C1="$A" fi echo "$l" done こんな感じ? >>293 の言っている意味がわからないので外してるかも…。
295 名前:login:Penguin [2009/08/17(月) 09:43:35 ID:WnQqR0f7] #!/bin/bash echo -e "|""`top -i -n1 | grep '^Cpu(s)'`""|"; ちょっとおおざっぱですが上記の方法でtopの内容を抜き取ってます。 Windows付属のハイパーターミナルで見ると普通に表示されるのですが、他のターミナルソフトで(tera termとか)で見ると Cpu(s): 1.2%us, 1.2%sy, 0.0%ni, 96.3%id, 1.1%wa,erial8250: too much work for irq4 0m 0.1%hi, 0.2%si, 0.0%st| こんな感じで途中にerial8250〜と表示されます。 これを検索してもそれらしいものも出てこず、何が原因かわからないでいます。 原因をご存じの方いましたらヒントかアドバイスもらえると助かります。
296 名前:login:Penguin mailto:sage [2009/08/17(月) 11:19:54 ID:Pf83pCV6] >>295 コピペ間違ってないかな? 「serial8250: too much work for irq4」なら 次のページが引っかかった。 eve-japan.co.jp/demos/linux-boot-demo.html ターミナルソフトによって異なるのは$TERM の問題なのかな? 表示自体は 単に stderr へのメッセージが表示されてるのか とおもうけど。「2>/dev/null」とかつけたら 変わるのかな
297 名前:295 [2009/08/17(月) 11:55:51 ID:WnQqR0f7] >>296 文字コードとかの問題でsが抜けてるっぽいです。 ログを見たら同じ記述があったのでメッセージが画面に出てるっぽいですね。 方法としては破棄する(やり方調べないといけないけど)かserial8250: too much work for irq4をsedとかで 消し去るくらいでしょうか。 スマートではないですがとりあえず消し去る方向で行ってみます。 ありがとうございます。
298 名前:login:Penguin mailto:sage [2009/08/17(月) 12:12:38 ID:cm75eODq] シリアルコンソールだよね? カーネルがprintkで出してるからsedとかじゃムリだと思う。 消したいなら/proc/sys/kernel/printkをいじるとか。
299 名前:297 [2009/08/17(月) 12:52:29 ID:WnQqR0f7] >>298 ありがとうございます。 調べて6417を5417に替えようとしたら"printk" E667: Fsync failedとか出てきて 書き換えさせてくれませんでした。 解決方法はまだわかってませんがなかなかハードルが高そうです。
300 名前:297 [2009/08/17(月) 13:10:38 ID:WnQqR0f7] 補足です。 echo -e "|""`top -i -n1 | grep '^Cpu(s)'`""|"; の部分を消したら表示されなくなりました。 topした時だけ出てるみたいです。理由はわかりませんが。 top内容を >> top.datとかに書き出してそこから引っ張ってくれば 表示されないようになるかもしれません。 根本的な解決にはなってませんが・・・。
301 名前:300 [2009/08/17(月) 17:13:08 ID:WnQqR0f7] さすがにスレ違かと思いますが、/proc/sys/kernel/printkというのはviでの編集は不可ですか? ググってはいるんですが編集が出来ずに困っております。 もしかしたら凄い見当違いな事を行っているのかもしれませんが解決のヒントもらえると助かります。
302 名前:login:Penguin mailto:sage [2009/08/17(月) 17:20:05 ID:R0skv6Jz] >>301 さすがにスレ違い。
303 名前:300 [2009/08/17(月) 17:30:37 ID:WnQqR0f7] >>302 すいません。 くだ質に行ってみます。
304 名前:login:Penguin mailto:sage [2009/08/18(火) 06:39:39 ID:elYCry/8] >>301 echoするもんでしょ。JK。
305 名前:login:Penguin mailto:sage [2009/08/18(火) 08:01:40 ID:8XgVhYMF] そうか? sysctl -w kernel/printk=foobar
306 名前:login:Penguin mailto:sage [2009/08/18(火) 09:35:31 ID:BInCpQzK] もうくだ質に移動したよ。
307 名前:login:Penguin [2009/08/18(火) 18:39:48 ID:S4j+NJGU] moge.dat testjama na moji sakujo="jama na moji" okikae="" echo `more /tmp/moge.dat | grep '^test' | sed -i s/$sakujo/$okikae/g` これでmoge.datの中からtestだけ表示出来るのではないかと思っていたのですが sed: -e 表現 #1, 文字数 13: 「s」コマンドが終了していません というエラーが表示されます。オプションで-eも使用していませんし構文的には大丈夫そうに思えたのですが 間違いがあればご指摘いただけないでしょうか。
308 名前:login:Penguin mailto:sage [2009/08/18(火) 19:03:56 ID:9vBuj+t/] sed 's/jama na moji//g' moge.dat じゃいかんのか? なぜechoしたりmoreしたりgrepしたりするのか意味わからん
309 名前:login:Penguin mailto:sage [2009/08/18(火) 19:12:00 ID:I/MV7qz2] sed の -i はなぜつけているんだい?
310 名前:307 [2009/08/18(火) 19:31:44 ID:S4j+NJGU] >>308 単純にmoreで見た中身をgrepしてそこからさらに削ればいいのかなと思い 検索をしてパイプでつなげただけの状態です。 また説明が足りませんでしたがmoge.datは複数行あってtestから始まる行が いくつかあったことから素人考えでこのようになりました。 >>309 すいません。 別の場所のsedをコピーしたときについたみたいです。 この場合は必要ないですね。
311 名前:login:Penguin mailto:sage [2009/08/18(火) 19:37:15 ID:9vBuj+t/] sed '/^test/s|jama na moji||g' moge.dat
312 名前:login:Penguin mailto:sage [2009/08/18(火) 19:43:42 ID:0jjNf9FI] >>307 の直接の答えを言うと、 sed -i s/$sakujo/$okikae/g ↓ sed -i s/jama na moji//g ↓ sed -i 's/jama' 'na' 'moji//g' と引数4つに解釈されるから。
313 名前:login:Penguin mailto:sage [2009/08/18(火) 22:00:14 ID:elYCry/8] >>306 マルチって死ねばいいと思う
314 名前:login:Penguin mailto:sage [2009/08/18(火) 22:23:21 ID:Df7zfcy/] スレ違いを指摘されて移動してるんだから、マルチとは言わないだろ
315 名前:login:Penguin [2009/08/19(水) 11:19:58 ID:zpPUbNQu] ログをとりたくてmessagesに内容を出すようにしたいのですが echo "logtest" >> /var/log/messages としても書き出されません。 このファイルとユーザー自体はrootではないので権限が問題かと思ってます。 このexampleユーザーはwheelに入れており、sudoで%wheel ALL=(ALL) ALLと念のため指定しましたがダメでした。 これは構文自体が間違っているということでしょうか。
316 名前:login:Penguin mailto:sage [2009/08/19(水) 11:38:22 ID:GJ3CGMhT] >>315 sudo echo "logtest" >> /var/log/messages とかやったの? これだと >> 以下は sudo の外にあるから効かない。 sudo sh -c 'echo "logtest" >> /var/log/messages' とかやればいい。 つーか logger で書いたら。
317 名前:login:Penguin [2009/08/19(水) 15:03:44 ID:9fjqV7Pu] コマンドの実行結果を>>で適当なテキストに出力して見てみると [H [J [0;10mtop - 20:06:35 up 51 min, 3 users, load average: 0.00, 0.00, 0.00 [0;10m [39;49m [K いろんなコマンドでこんな感じになってるんですがこれは何なのでしょうか? これはtop内容ですがなぜこうなるのかがわかりません。 表示されている文字だけをテキストに出したいのですがどうすればいいでしょう か。
318 名前:315 [2009/08/19(水) 15:07:02 ID:zpPUbNQu] >>316 素早いレスありがとうございます。 1個の命令として見られていなかったわけですね。 loggerでかけるところはそうしたいのですが、他にもいくつかファイルがあって そちらでも追記したいと思っておりました。 まだ試してませんがこれでいってみたいと思います。
319 名前:login:Penguin mailto:sage [2009/08/19(水) 15:08:58 ID:yGi4QWIv] topの人はtopの何を切り出したいのだ? ロードアベレージ?
320 名前:login:Penguin mailto:sage [2009/08/19(水) 15:09:49 ID:GJ3CGMhT] >>317 top なら -b で。 >>261 でも書いたはずだが。
321 名前:login:Penguin mailto:sage [2009/08/19(水) 15:16:10 ID:GJ3CGMhT] >>317 ファイルへの出力は 基本的にはただの文字を順に追記していくだけ。 画面への出力は文字を反転させたり色を変えたり いったん書いたものを戻って書き直したりする。 画面用の出力をそのままファイルに出すとおかしなことになる。
322 名前:login:Penguin mailto:sage [2009/08/19(水) 21:31:13 ID:rKA7cUBO] echo "logtest" | sudo tee -a /var/log/messages teeってマイナー?
323 名前:login:Penguin mailto:sage [2009/08/19(水) 22:00:23 ID:ZZH7H5sc] いやんバカんな事やってないで、きちんとloggerを使いなさい。
324 名前:login:Penguin mailto:sage [2009/08/19(水) 22:31:33 ID:S8kRS54+] シェルにloggerなんてあるの?
325 名前:login:Penguin mailto:sage [2009/08/19(水) 23:54:53 ID:Gto2VsIQ] ------------------------- 今からこのスレは外部コマンド禁止になりました -------------------------
326 名前:login:Penguin mailto:sage [2009/08/20(木) 00:22:53 ID:z7LXRLpP] シェルの組み込みコマンドだけでやれってか? 厳しいな。。
327 名前:login:Penguin mailto:sage [2009/08/20(木) 10:46:36 ID:D2EfC5ES] >>324 それ言ったら sudo だってないじゃん。
328 名前:login:Penguin mailto:sage [2009/08/20(木) 11:47:57 ID:tKteNA5S] 今、ネットワークカードを通過するトラフィック量をRRDToolを使用してグラフにしたくて 1秒あたりの送信・受信をバイトで求めるスクリプトを書いたつもりなのですが、 これでちゃんと値が求められているのか、自分ではよく分からないのです。 それっぽい感じの値は出てきてるんですが・・。 そこでなのですが「ここが違う」「そもそもそれじゃダメ」などということがありましたら、 教えていただきたく、ここに書き込まさせていただきました。 もし、お時間がありましたら添削していただけると嬉しいです・・・。 func_ethernet() { UserName="UserName" AuthPass="AuthPassWd" PrivPass="PrivPassWd" HostName="localhost" if [ $1 = "send" ]; then LogName="/tmp/log-send" LogOld=`cat ${LogName} | sed -n 2p` LogOldTime=`cat ${LogName} | sed -n 1p` date +"%Y-%m-%d %k:%M:%S" > ${LogName} /usr/bin/snmpget -a MD5 -A ${AuthPass} -l authPriv -u ${UserName} -x AES -X ${PrivPass} -v 3 ${HostName} .1.3.6.1.2.1.2.2.1.16.2 | awk '{print $NF;}' >> ${LogName} LogNew=`cat ${LogName} | sed -n 2p` LogNewTime=`cat ${LogName} | sed -n 1p` echo | awk '{print ( (newValue - oldValue) / (newTime - oldTime) );}' newValue=${LogNew} oldValue=${LogOld} newTime=`date -d "${LogNewTime}" +"%s"` oldTime=`date -d "${LogOldTime}" +"%s"` elif [ $1 = "recive" ]; then 略 fi } rrdtool update ${RRD_PATH}/ethernet.rrd N:`func_ethernet send`:`func_ethernet recive`
329 名前:login:Penguin [2009/08/20(木) 12:00:54 ID:3vJ7EKjF] 文字色と背景色ついて質問です。 わかりやすく色をつけてみたのですがこの場合は文字の部分のみが緑文字と黒背景となります。 #!/bin/bash echo -en "\033[32;40m"; select i in "123" "456"; do [ -n "$i" ] && break done case "$i" in 123) func123;; 456) func456;; esac 文字ではない部分も黒背景とする事は可能ですか?
330 名前:login:Penguin mailto:sage [2009/08/20(木) 19:05:04 ID:KNtykgpF] まずエスケープシーケンスを直接指定するのはよくない 端末によってサポートされている機能に違いもあるし 「文字ではない部分」の意味も不明 行単位ということなら #!/bin/sh tput setab 0 tput setaf 2 tput el echo "Hello"
331 名前:login:Penguin [2009/08/21(金) 00:19:49 ID:F/0U9rwq] 文字ではない部分ってのはその通りだろう。 文字の背景の色を指定は出来るが、文字以外のところの背景色はどうすってことじゃね? \033[32;40mはせめて ESC=\033[ midori=${ESC}32 とかにしたほうがいいと思う。もっといい方法あればえらい人が教えてくれるはず。
332 名前:login:Penguin mailto:sage [2009/08/21(金) 00:26:48 ID:korZcQ4D] >>331 tput使えよ。
333 名前:login:Penguin mailto:sage [2009/08/21(金) 00:34:42 ID:G/rWMdtH] すみませんが組み込みコマンドだけでお願いします
334 名前:login:Penguin mailto:sage [2009/08/21(金) 00:41:38 ID:korZcQ4D] >>333 busyboxにshとtputが入ってる場合はOK?
335 名前:login:Penguin mailto:sage [2009/08/21(金) 00:53:50 ID:hq/n18x3] >>331 > 文字の背景の色を指定は出来るが、文字以外のところの背景色はどうすってことじゃね? だから, 画面全体をそうしたければclearすればいいんじゃね 文字を書き込んでいない*どの部分を*背景色にしたいんだ, って話
336 名前:331 [2009/08/21(金) 07:39:21 ID:F/0U9rwq] tputなんてあるわけね。 シェルに標準でそういうのあるの知らなかったよ。 >>335 文字がかかれてない場所全部じゃね? ようは画面全体の背景色を指定したいってことだと思うけど。 文字と文字の背景色は\033[32;40mで指定できるけど それ以外の全体の背景色という意味だと思う。
337 名前:login:Penguin mailto:sage [2009/08/21(金) 07:45:26 ID:korZcQ4D] >>336 とある端末だとそうですね。
338 名前:login:Penguin [2009/08/21(金) 11:30:52 ID:90eN5uxA] そういうの意識するほどたくさんの機器がないからだとおもうけど 俺はVT100でだいたい表示されてればOKかな〜とか勝手に思ってる。 ネットワーク機器だとやっぱりまだANSIとかが標準になってたりするのかな? さすがに最近のネットワーク機器でVT52が標準とかってことはないと信じたいけど。
339 名前:login:Penguin mailto:sage [2009/08/21(金) 17:12:14 ID:hq/n18x3] >>336 > ようは画面全体の背景色を指定したいってことだと思うけど。 >>335 行単位なら >>330 カーソル位置からscreenの最後までならelの代わりにed使えばいい
340 名前:login:Penguin mailto:sage [2009/08/21(金) 23:42:11 ID:korZcQ4D] 所謂、ブルースクリーンを作りたい。
341 名前:login:Penguin mailto:sage [2009/08/22(土) 19:41:23 ID:iygx6FPk] # word.lst あいうえお aiueo かきくけこ kakikukeko さしすせそ sasisuseso #target.txt なにぬねの あいうえおキター たちつてと さしすせそ キターかきくけこ word.lst の区切文字はTAB 、またはSPACE とします target.txt を一行ずつ読込み、word.lst のキーとなる単語があれば、 置換しdest.txt に出力するシェルスクリプトの書き方を教えて頂けないでしょうか。 #dest.txt なにぬねの aiueoキター たちつてと sasisuseso キターkakikukeko
342 名前:login:Penguin mailto:sage [2009/08/22(土) 19:49:19 ID:+xcsiCNS] まず服を脱ぎます
343 名前:341 mailto:sage [2009/08/22(土) 20:44:33 ID:iygx6FPk] while read line do 処理(TARGET=あいうえお、DEST=aiueo) done < word.lst 例えばこのように、line で読込んだ あいうえお aiueo を変数TARGET、 DEST に格納する方法を教えてもらえませんでしょうか。
344 名前:login:Penguin mailto:sage [2009/08/22(土) 21:14:08 ID:+xcsiCNS] set $line TARGET=$1 DEST=$2
345 名前:login:Penguin mailto:sage [2009/08/22(土) 21:44:23 ID:beHpftLf] すぐ書ける簡単なやり方で #!/bin/sh while read from to do echo "s|$from|$to|g" done <word.lst >program sed -f program <target.txt >dest.txt
346 名前:login:Penguin mailto:sage [2009/08/22(土) 23:46:26 ID:m2+LmGIC] >>345 さん、お世話になります 掲示していただいたスクリプトでの置換ですが、>>341 で掲示したファイルの置換は期待通りの結果になるのですが 下記のような内容のファイルだと全く置換できません、なぜなのでしょうか? #target.txt CREATE TABLE `利用明細` ( `伝票番号` INTEGER AUTO_INCREMENT DEFAULT NULL , `商品ID` INTEGER DEFAULT NULL , `数量` INTEGER DEFAULT NULL , PRIMARY KEY (`伝票番号`) ); #word.lst 伝票番号 DENNPYOUBANGOU 数量 SUURYOU
347 名前:login:Penguin mailto:sage [2009/08/23(日) 00:31:10 ID:aCd7CupH] >>346 です 解決しました、文字コードを錯誤してました(^^;
348 名前:login:Penguin mailto:sage [2009/08/26(水) 02:39:26 ID:5uGOu/R4] 1000文字ごとに改行を入れる簡単な方法を教えてもらえませんか
349 名前:login:Penguin mailto:sage [2009/08/26(水) 04:35:48 ID:aiWYMJf6] これ、俺は思いつかない、ラテン文字だけなのか、マルチバイト文字も混在してるのか こういうのは、やっぱ、perlやrubyが得意だ
350 名前:login:Penguin mailto:sage [2009/08/26(水) 04:41:51 ID:r5TfqoXR] nkf -f 1000
351 名前:login:Penguin [2009/08/26(水) 14:07:13 ID:ehP4IQnp] abcdefgabcdefgabc ... と続く文字列にn文字ごとに「,」を入れてcsvにするにはどうしたらいいですか?
352 名前:login:Penguin mailto:sage [2009/08/26(水) 14:24:34 ID:LXSFF2c5] echo abcdefghijklmnabcdefghijklmnh | sed 's/\(.\{5\}\)/\1,/g'
353 名前:login:Penguin mailto:sage [2009/08/26(水) 14:28:23 ID:z6vBIwzM] echo 'abcdefgabcdefgabc' | sed 's/\(.\{変数n\}\)/\1,/g'
354 名前:login:Penguin mailto:sage [2009/08/26(水) 14:29:09 ID:z6vBIwzM] 重複スマソ
355 名前:login:Penguin mailto:sage [2009/08/26(水) 15:46:39 ID:ehP4IQnp] >>352 >>353 thanx!!
356 名前:login:Penguin mailto:sage [2009/08/26(水) 18:44:54 ID:whFI2cwY] list.txtのなかにURLが一行ずつあり, そのURLをw3mでアクセスしてその結果を URLからhttp://を除いたファイル名で保存したいのですが #!/bin/sh FILE=list.txt while read LINE do $OUT=`echo $LINE |sed 's/// '` w3m -dump $LINE > $OUT done < $FILE これだとダメになってしまいます.とりあえずlist.txtにはgoogle.net を入れています.
357 名前:login:Penguin mailto:sage [2009/08/26(水) 18:54:19 ID:LXSFF2c5] s### とか区切り文字を変える。 $OUT= の$は不要。
358 名前:login:Penguin mailto:sage [2009/08/26(水) 18:54:58 ID:CSCAGJKR] とりあえず$OUTはOUTのtypoだよな あとはsedのマニュアルでも読んどけ
359 名前:login:Penguin mailto:sage [2009/08/26(水) 18:59:39 ID:z6vBIwzM] >>356 どうダメなのか具体的に書いてくれないと。 とりあえず sed 's/// ' はダメ。 区切りに使う文字(ここでは / )はエスケープしないと。 あるいは、違う文字(例えば @)で代用する。 $ echo 'www.example.com/ ' | sed 's@^@@ ' www.example.com/
360 名前:login:Penguin mailto:sage [2009/08/26(水) 19:00:34 ID:z6vBIwzM] また重複してしまった。吊ってくる。 λ..
361 名前:login:Penguin mailto:sage [2009/08/26(水) 19:01:21 ID:whFI2cwY] >>357-358 ありがとうございます.うまくいきました.$OUTはミスです.ありがとうございました.
362 名前:login:Penguin mailto:sage [2009/08/26(水) 19:03:00 ID:whFI2cwY] >>359 ありがとうございます.区切り文字を変えてうまくいきました.
363 名前:login:Penguin mailto:sage [2009/08/26(水) 19:03:13 ID:CSCAGJKR] やったね!