1 名前:login:Penguin mailto:sage [2008/05/17(土) 13:44:57 ID:9hFWtCOD] UNIX板のスレを見ている方も多数おられるかと思いますが、 まあそれはそれとして、BASHウゼーとか言われる心配なく 平和にLINUX的スクリプト談義しましょうよ。 初めての自作スクリプト、自信ないから見てください。な初心者から トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで いろいろな人に参加して頂けると嬉しいです。 perlやらPythonやらの話が混ざっても良いんでない? 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 あたりに色々と。
82 名前:login:Penguin mailto:sage [2008/06/04(水) 10:42:14 ID:jifIrR2s] >>81 「bash のリダイレクトについて」だろ。 /dev/null は bash の問題ではない。 ls /home/ >/dev/null 2>test.txt で OK。
83 名前:login:Penguin mailto:sage [2008/06/04(水) 11:04:40 ID:bCIXok9Z] >>82 すいません、リダイレクトについてでした。回答有難うございます。 ls /home/ >/dev/null 2>test.txtについての流れで確認を して頂きたいのですが宜しくお願い致します。 上記の標準出力1の状態について、lsの結果が/dev/nullに行く。 (ここでデータは破棄されてしまうという考えなのですが) そして、エラー出力2はtest.txtになってますよね? 1の状態 /dev/null 2の状態 test.txt
84 名前:login:Penguin mailto:sage [2008/06/04(水) 11:52:58 ID:3E+PCnl7] >>81 > 1: ls /home/ > /dev/null 2>&1 > test.txt 1) /dev/null を標準出力の出力先に指定 2) 標準出力の出力先をエラー出力の出力先に指定 3) test.txt を標準出力の出力先に指定 結果 標準出力: test.txt エラー出力: /dev/null > 2: ls /home/ > test.txt > /dev/null 2>&1 1) test.txt を標準出力の出力先に指定 2) /dev/null を標準出力の出力先に指定 3) 標準出力の出力先をエラー出力の出力先に指定 結果 標準出力: /dev/null エラー出力: /dev/null
85 名前:login:Penguin mailto:sage [2008/06/04(水) 11:59:59 ID:jifIrR2s] >>81 1: でほんとにうまく行ってる?
86 名前:login:Penguin mailto:sage [2008/06/04(水) 16:29:28 ID:bCIXok9Z] >>84 リダイレクトは出力先を決めるだけなのですか。 解説して頂いた通りで色々パターンを考えてみましたら 出来るようになりました、有難うございます >>85 一応処理結果では正常な雰囲気なのですが、>>81 ですと 理解しずらいので、変えようか考えています。 レス遅れましたが皆さんありがとうございました
87 名前:login:Penguin mailto:sage [2008/06/04(水) 22:17:21 ID:T1bDhlj1] >>86 シェルどころか日本語まで・・・
88 名前:login:Penguin mailto:sage [2008/06/05(木) 00:21:00 ID:lO8RLUCT] 与えられたパスを絶対パスに正規化したいのですがどうすればよいですか? 単に相対->絶対の変換をするだけじゃなくて .とか..も適切に変換してくれるとうれしいのですが。
89 名前:login:Penguin mailto:sage [2008/06/05(木) 00:23:58 ID:qyhUQGl8] >>88 `pwd`/$1
90 名前:login:Penguin mailto:sage [2008/06/05(木) 00:32:17 ID:brEG0pS6] realpathだっけ?
91 名前:login:Penguin mailto:sage [2008/06/05(木) 06:27:50 ID:Ysl4yLMq] ここはLinux板だからreadlink -fでどうか
92 名前:login:Penguin mailto:sage [2008/06/07(土) 17:03:59 ID:lYfLA/cT] スレ違いのような気もしますが・・・ lsの出力が端末だとスペース区切りなのにパイプやリダイレクトすると改行になるのはどういう仕組みですか?
93 名前:login:Penguin mailto:sage [2008/06/07(土) 17:10:19 ID:6DqLCPKX] isatty(3)
94 名前:92 mailto:sage [2008/06/07(土) 17:13:39 ID:lYfLA/cT] なるほど、lsのほうで端末かどうかみてるんですね… 納得しました。どうもありがとうございます。
95 名前:login:Penguin mailto:sage [2008/06/08(日) 00:25:14 ID:z0g0MNBT] スレ違いだと思うならくだ質に行きなさい。
96 名前:login:Penguin mailto:sage [2008/06/08(日) 14:37:28 ID:w3H8z2Sk] シェルスクリプト中で、リダイレクトでファイルを生成するとファイル名が文字化けしてしまうのですが 一体何が悪いんでしょうか。 ↓みたいなことになります。 $ echo $LANG ja_JP.UTF-8 $ cat test.sh echo a > "$1" $ echo hoge > "あいうえお.hoge" ; ls test.sh あいうえお.hoge $ sh test.sh "あいうえお.hoga” ; ls ??????????.hoga test.sh あいうえお.hoge touchとかなら文字化けしないようなのですが。
97 名前:96 mailto:sage [2008/06/08(日) 14:54:23 ID:w3H8z2Sk] 補足です。 $ ls | hexdump -C 00000000 e3 82 e3 84 e3 86 e3 88 e3 8a 2e 68 6f 67 61 0a |...........hoga.| 00000010 74 65 73 74 2e 73 68 0a e3 81 82 e3 81 84 e3 81 |test.sh.........| 00000020 86 e3 81 88 e3 81 8a 2e 68 6f 67 65 0a |........hoge.| 0000002d
98 名前:login:Penguin mailto:sage [2008/06/08(日) 21:58:48 ID:cpZuCikO] ls --show-control-chars
99 名前:login:Penguin mailto:sage [2008/06/09(月) 19:55:01 ID:Dt/jCYdy] jp.youtube.com/watch?v=x7pPajOvQGo ワロタ
100 名前:login:Penguin mailto:sage [2008/06/09(月) 20:44:39 ID:19yx0Oqh] 注文スクリプトを作りました、ってこと?
101 名前:login:Penguin mailto:sage [2008/06/09(月) 20:52:39 ID:1XPLtUDQ] 日本でもオンライン注文のピザ屋があれば出来そうね。 映画ジュラシックパークの中でプログラマーがデブでピザ食べていたけど、 この動画もその皮肉?
102 名前:login:Penguin mailto:sage [2008/06/09(月) 20:56:56 ID:zrUasBao] シェルスクリプトじゃないけど。 e8y.net/blog/2006/07/25/p126.html
103 名前:login:Penguin mailto:sage [2008/06/09(月) 21:02:45 ID:zrUasBao] >>101 hacker の食べ物といえば ピザと Jolt Cola と相場が決まっておる。
104 名前:login:Penguin mailto:sage [2008/06/10(火) 00:00:50 ID:Uz5XyeDf] なんだPizza Partyか slashdot.jp/article.pl?sid=04/05/08/0858242
105 名前:login:Penguin [2008/06/10(火) 13:27:23 ID:Gys5ZtGT] 2037→1048→2481207→↓ 2037→1048→2481207→↓ 20311→1056→2481211→↓ 20320→1114→2481218→↓ 20320→1114→2481218→↓ 20326→1155→2481211→↓ 20326→1155→2481211→↓ → →2481211→ → →2481211→↓ tomo.txtの中身はこうなっています。(→はタブ、↓は改行コードです) これで2列目に何も文字列が入っていない場合は3列目も何も文字列を 入れないようにしたいです。(上のtxtの場合だと下の2行が対象になります) sedとcutでなんとかなるかと思ったんですけどなかなかうまくいきません。 誰かいいスクリプトを教えて下さい。宜しくお願いします。
106 名前:login:Penguin mailto:sage [2008/06/10(火) 14:03:41 ID:rnP/TIGa] これでどう? awk '{if (length($2) != 0) print;}' tomo.txt
107 名前:105 [2008/06/10(火) 15:27:43 ID:Gys5ZtGT] 早速のレスありがとうございます。でもうまく動かないです。。。 試しにlengthの値を変えてみたりしたんですが何も変化がないです。。
108 名前:login:Penguin mailto:sage [2008/06/10(火) 16:24:40 ID:mINSOvv3] >107 もっと具体的に目的を書かないとどういう結果が欲しいのか解らんよ。 >105の下から2行目は改行が入ってないの? それとなにも列に入っていないと言いつつ全角スペースが入っているのは何故? まあ、やりたいことを推測して例を出せばこんな感じか? cat tomo.txt | while read LINE;do set -- $LINE; if [ $# = 3 ]; then echo "$LINE"; fi; done
109 名前:105 [2008/06/10(火) 19:02:47 ID:CM93IypP] >>108 さん ご回答ありがとうございます。 すみません。 >105の下から2行目は改行が入ってないの? 入ってます。 >それとなにも列に入っていないと言いつつ全角スペースが入っているのは何故? 実際には入っていません。 ですから正確にはtomo.txtはこうなってます。 2037→1048→2481207→↓ 2037→1048→2481207→↓ 20311→1056→2481211→↓ 20320→1114→2481218→↓ 20320→1114→2481218→↓ 20326→1155→2481211→↓ 20326→1155→2481211→↓ →→2481211→↓ →→2481211→↓
110 名前:105 [2008/06/10(火) 19:05:04 ID:CM93IypP] それを以下の下2行の2列目に文字列がない場合は 削除したいので以下のような結果を出して欲しいんです。 2037→1048→2481207→↓ 2037→1048→2481207→↓ 20311→1056→2481211→↓ 20320→1114→2481218→↓ 20320→1114→2481218→↓ 20326→1155→2481211→↓ 20326→1155→2481211→↓ →→→↓ →→→↓ 何度もすみません。よろしくお願いします。
111 名前:105 [2008/06/10(火) 19:19:42 ID:CM93IypP] cat tomo.txt | while read LINE;do set -- $LINE; if [ $# = 3 ]; then echo "$LINE"; fi; done を試してみましたけどやはり何も変化はありませんでした。 すみません。お願いします。
112 名前:login:Penguin mailto:sage [2008/06/10(火) 19:35:16 ID:gcco3DVH] よくわからんけど、タブが2回続いたらタブ3個だけの行に置き換えるとかじゃだめなの? やり方は知りません
113 名前:login:Penguin mailto:sage [2008/06/10(火) 21:34:41 ID:39ga6S1g] これはどうだ? awk -F '¥t' '{if ($2 == "") { $3 = ""}; print}' < tomo.txt awkのデフォの列識別はタブじゃないから-Fで指定してね。
114 名前:105 [2008/06/11(水) 03:27:04 ID:bnnOzDXT] >>113 ありがとうございます。今日はこんな時間なので明日試してみます。 '\t'の部分がうまく識別してくれたらいけそうな感じがします。
115 名前:105 [2008/06/11(水) 05:10:34 ID:bnnOzDXT] おはようございます。 今試してみたらうまく動きました。ありがとうございました。
116 名前:login:Penguin mailto:sage [2008/06/11(水) 05:47:46 ID:wK/2Md+f] >>114 >>115 明日ってw
117 名前:105 [2008/06/11(水) 08:14:21 ID:sVHDZWwZ] あっーーー!よくみたら 2037→1048→2481207→↓ 2037→1048→2481207→↓ 20311→1056→2481211→↓ 20320→1114→2481218→↓ 20320→1114→2481218→↓ 20326→1155→2481211→↓ 20326→1155→2481211→↓ ↓ ↓ って感じで最後の2行のタブが全部消えてました。。。 これは消えると困るんです。再度お願いします。。。
118 名前:login:Penguin mailto:sage [2008/06/11(水) 08:47:58 ID:uz75y6lZ] 難問が…
119 名前:login:Penguin mailto:sage [2008/06/11(水) 10:00:16 ID:NnMk6hEw] >112でいけるだろ sed -e 's/\t\t[^\t][^\t]*/\t\t/' tomo.txt \tが使えなかったらタブで置きかえる。
120 名前:login:Penguin mailto:sage [2008/06/11(水) 10:14:39 ID:tvbxZjG7] >>117 あり? $2 = ""をしない行はちゃんとタブで分けたまま出力してるのに 置き換えをした行はスペースが出力区切り文字になっちゃうな。 じゃ、無理矢理修正 awk -F '¥t' -v OFS='¥t' '{if ($2 == "") { $3 = ""}; print}' < tomo.txt OFS はoutput field separator
121 名前:105 [2008/06/11(水) 11:52:44 ID:sVHDZWwZ] ありがとうございます! 今度こそ大丈夫です!本当にありがとうございます!
122 名前:login:Penguin mailto:sage [2008/06/11(水) 22:25:09 ID:8Wsl19+C] Open Foundation Software じゃないのか。
123 名前:login:Penguin mailto:sage [2008/06/12(木) 00:10:41 ID:JqmZrOtu] >>122 OSFですがw Open Software Foundation
124 名前:login:Penguin mailto:sage [2008/06/12(木) 11:24:21 ID:irJT+vdW] 誰かピザハット対応ピザ注文コマンド作ってくれないものか。
125 名前:login:Penguin mailto:sage [2008/06/12(木) 11:52:43 ID:3DTOjPry] >>124 出前館にあるみたいだから、>>102 をいじれば作れるんじゃない?
126 名前:login:Penguin [2008/06/12(木) 12:44:22 ID:Y4yiWWC/] #xxx.txtの1行目を変数iに代入します for i in `cat xxx.txt` do #xxx.txtの2行目を$jに入れます j=`sed -n '2p' export j #変数eeeにxxx.txtの2行目から15行目を代入します eee=`sed -n '2-15p' export eee #pasteで結合できるように変数をtxtファイルに入れます echo $i > i.txt echo \t > ccc.txt echo $eee > eee.txt if #xxx.txtの行の先頭が20から始まる場合 then test $j = "^20" #結合します paste i.txt ccc.txt eee.txt else #何もしない fi done 初心者です。こんなスクリプトを作ったんですけどうまく動きません。 修正していただけるとありがたいです。お願いします。
127 名前:126 [2008/06/12(木) 12:55:44 ID:Y4yiWWC/] #xxx.txtの1行目を変数iに代入します for i in `cat xxx.txt` do #xxx.txtの2列目を$jに入れます j=`sed -n '2p' export j #pasteで結合できるように変数をtxtファイルに入れます echo $i > i.txt echo \t > ccc.txt if #xxx.txtの行の先頭が20から始まる場合 then test $j = "^20" #結合します paste i.txt ccc.txt eee.txt else #何もしない fi done 間違えました。eee.txtは別途作りますので上記のような感じです。
128 名前:login:Penguin [2008/06/12(木) 14:03:25 ID:Y4yiWWC/] 意味不明ですみません。会社から回りの人の目を盗みながら こそこそと2ちゃんねるやってるんで・・・ これでお願いします。 #変数aaaにxxx.txtの1行目を代入します for aaa in `cat xxx.txt` do #変数bbbにxxx.txtの2行目を代入します bbb=`sed -n '2p' export=bbb #変数cccに$iの1列目を代入します ccc=`cat $i | cut -f1` export=ccc #変数dddに$iの2から14列目を代入します ddd=`cat $i | cut -f2-14` exprot=ddd if #xxx.txtの2行目の先頭行が20の場合は切り出したファイルを結合します then test $aaa = "^20" paste ccc.txt tab.txt ddd.txt elsei #それ以外の場合はその列をそのままファイルに書き出します echo aaa.txt fi done
129 名前:login:Penguin mailto:sage [2008/06/12(木) 18:57:20 ID:RuYhMH5C] >>126 日本語でおk 人に説明するためにやりたいことを整理すると自然に解決したりするものよ。
130 名前:login:Penguin mailto:sage [2008/06/12(木) 19:11:00 ID:3DTOjPry] 最初に for を持ち出したところからすでに意図がわからん。
131 名前:login:Penguin mailto:sage [2008/06/12(木) 19:16:11 ID:kPFkNEQb] perlでやればいいと思うよ
132 名前:126 [2008/06/12(木) 19:28:24 ID:TxRWHMwb] >>129 ありがとうございます。でもなかなかうまくいかないんです。 >>130 すみません。for文の処理がうまくいかないんで抜粋しました。 >>131 perlは全然わかんないんでなんとかシェルでやりたいです。
133 名前:login:Penguin mailto:sage [2008/06/12(木) 20:00:58 ID:48VJya+Z] 任意の時間を入力し、それをUTC時間に変換することは可能でしょうか? dateコマンドだとカレントタイムを変換してしまうので。。
134 名前:login:Penguin mailto:sage [2008/06/12(木) 20:55:58 ID:JwqUhAVV] date -u じゃダメなのかな
135 名前:login:Penguin mailto:sage [2008/06/12(木) 21:14:33 ID:lC+5xa2L] それに -d オプションを付けたいんじゃないのかな。 $ date -u -d '2001/5/20 13:33:35 JST'
136 名前:login:Penguin mailto:sage [2008/06/12(木) 21:41:49 ID:JqmZrOtu] >>133 awkにあるmktime, strftime関数を使うのが一番手軽かな。
137 名前:133 mailto:sage [2008/06/12(木) 23:39:42 ID:mOwz8//t] >>134-136 実現できました! 即レス助かりました。ありがとうございます。
138 名前:login:Penguin mailto:sage [2008/06/13(金) 08:03:49 ID:TrNV+QBw] >>126 は解決したのだろうか。 俺には意図が解らなかったが。
139 名前:126 [2008/06/13(金) 09:47:03 ID:j8pwVaea] >>138 心配していただきありがとうございます。まだ未解決です。 簡単にいうと aaa.txtが [100] 201 202 203 [200] 301 302 303 となっている場合に [100] 201 [100] 202 [100] 203 [200] 301 [200] 302 [200] 303 としたいんです。(スペースのところはタブ区切りを入れたいです) お願いします。
140 名前:login:Penguin mailto:sage [2008/06/13(金) 10:12:43 ID:+c/4qhZ/] #!/usr/bin/perl my $i = ''; while (<>) { chomp; if ($_ eq '') { $i = ''; print "\n"; } elsif ($i eq '') { $i = $_; } else { print "$i\t$_\n"; } }
141 名前:126 [2008/06/13(金) 10:25:54 ID:j8pwVaea] >>140 それを今試してみたら [100] [100] 201 [100] 202 [100] 203 [100] [100] 301 [100] 302 [100] 303 みたいになっちゃいました。 せっかくコードを書いていただいたのですがちょっと 結果が違いました。すみません。
142 名前:login:Penguin mailto:sage [2008/06/13(金) 10:28:27 ID:5MIbjJC0] > 126 awk 'BEGIN {OFS = "\t";}; $0 != "" {if ($0 ~ /^\[/) section = $1; else print section, $1}' aaa.txt 多分もっと格好よくできるはずなんだけどなぁ
143 名前:login:Penguin mailto:sage [2008/06/13(金) 10:38:47 ID:obeusV/U] >>139 gawk '{if(match($0,/^\[[0-9][0-9]*\]$/))t=$0;else{if(length)$0=t "\t" $0;print;}}' aaa.txt sed -e '/^\[[0-9][0-9]*\]$/{h;d}/^..*/{x;G;s/\n/\t/;p;s/\t.*//;h;d}' aaa.txt まだ短くならないかな。
144 名前:login:Penguin mailto:sage [2008/06/13(金) 10:43:39 ID:+c/4qhZ/] >>141 203 の次の行は空行じゃないの?
145 名前:login:Penguin mailto:sage [2008/06/13(金) 10:45:41 ID:+c/4qhZ/] >>126 > #変数eeeにxxx.txtの2行目から15行目を代入します > #xxx.txtの行の先頭が20から始まる場合 最初と言ってることぜんぜん違うじゃねーか。
146 名前:126 [2008/06/13(金) 11:04:27 ID:j8pwVaea] >>142 おおおっ。すごいです。ありがとうございます。 で、あまりにも簡単に説明しすぎたせいで少し動作が違いました。 実際にはaaa.txtは複数の列でできています。 [100] 201 100 200 202 100 200 203 100 200 "" [200] 301 100 300 302 100 300 303 100 300 "" あと先頭が数字では始まらないけど文字列が入っている場合もあります。 その列は何も処理をしたくないんです。もちろん空白の列にも何も処理をしたくないです。 説明が不足していてすみません。お願いします。
147 名前:login:Penguin mailto:sage [2008/06/13(金) 11:08:06 ID:+c/4qhZ/] どんどん条件変わるな。 もう付き合いきれん。
148 名前:login:Penguin mailto:sage [2008/06/13(金) 11:09:51 ID:+c/4qhZ/] >>140 を好きに改造して使ってくれ。
149 名前:login:Penguin mailto:sage [2008/06/13(金) 11:57:53 ID:5MIbjJC0] >>126 #!/usr/bin/awk BEGIN { OFS = "\t" } { if ($1 ~ /^\[.+\]$/) { section = $1 } else if ($1 ~ /^[0-9]/ ) { sub(FS, OFS) # これがいるかどうか分からない print section, $0 } else { print } } まぁ暇だし,自分の勉強にもなるしな
150 名前:126 [2008/06/13(金) 12:12:09 ID:j8pwVaea] >>147 ごめんなさいごめんなさい。許して下さい。 >>148 ありがとうございます。今から試してみます。感謝してます。
151 名前:126 [2008/06/13(金) 12:24:52 ID:j8pwVaea] >>149 ^ syntac error ^ 正規表現が終端がされていません って出ます。 そのコードを2.awkとして保存してchmod 755 で ./2.awk < aaa.txt > bbb.txt としたんですけど僕のやりかたが悪かったんでしょうか。 もうちょっと試してみます。すみません。
152 名前:login:Penguin mailto:sage [2008/06/13(金) 13:34:55 ID:frtx8yVp] シェルとかプログラミング言語よりも,ちゃんと説明できる日本語を習得するのが先だとしみじみ思う.
153 名前:126 [2008/06/13(金) 13:45:24 ID:j8pwVaea] awk -f ./2.awk < aaa.txt > bbb.txt で実行できました。すみません。 でも結果としては数字のところにタブが挿入されただけでうまくいきませんでした。 また時間がある時にで結構ですので教えてくださると助かります。よろしくお願いします。
154 名前:126 [2008/06/13(金) 14:31:16 ID:j8pwVaea] あれれ。すみません。aaa.txtを作って試してみたらうまく動作してました。 元データのほうに何か問題があるようです。確認してみます。
155 名前:126 [2008/06/13(金) 14:57:25 ID:j8pwVaea] >>149 ありがとうございます。感謝感謝です。 if ($1 ~ /^\[.+\]$/) { を if ($1 ~ /^\[.+\]*$/) { にして無事動作しました。[]の後ろに文字列が入っているのが原因でした。 本当にありがとうございます。
156 名前:login:Penguin mailto:sage [2008/06/15(日) 03:39:35 ID:sc6xQlic] #!/bin/sh n=`cat text.txt` で読み込んだ$nに対して 一行ずつ処理を行いたいのですがどうしたらよいでしょうか for a in $n を使おうと思ったのですが、スペースでも分割されてしまい 理想の動作をさせることができません よろしくお願いします
157 名前:login:Penguin mailto:sage [2008/06/15(日) 04:58:13 ID:wo2EqLas] cat text.txt | while read line; do echo "$line"; done while read line; do echo "$line"; done < text.txt ダブルクオート
158 名前:login:Penguin mailto:sage [2008/06/15(日) 07:24:02 ID:Wqtu/af2] done < text.txt はbash依存だったような
159 名前:login:Penguin mailto:sage [2008/06/15(日) 09:18:42 ID:sc6xQlic] >>157 できましたありがとうございます! whileの中でreadを再び使えば同時に何行まとめて、という処理が出来るんですね
160 名前:login:Penguin mailto:sage [2008/06/15(日) 09:44:47 ID:riPFD/ci] >>158 Linux板的にはいいんでないの。 Unix板だったら気にしたほうがいいかもしれんが。
161 名前:login:Penguin mailto:sage [2008/06/15(日) 10:19:04 ID:+vOR/R57] >>158 /bin/shでも動くからおk
162 名前:login:Penguin mailto:sage [2008/06/15(日) 10:47:11 ID:Wqtu/af2] dashもOKだから、まぁいいのか
163 名前:login:Penguin mailto:sage [2008/06/15(日) 12:04:09 ID:MYPOmB3X] そのあたりってPOSIXでちゃんと規定されてるものなの? 単にbashをまねて取り込んだshなのか、真のshからサポートする機能か どうしたら見分けつけられるのかよくわからない。
164 名前:login:Penguin mailto:sage [2008/06/15(日) 12:33:26 ID:+vOR/R57] www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html
165 名前:login:Penguin mailto:sage [2008/06/15(日) 12:43:50 ID:cU/mpVoU] bash や dash があるなら、cash もあるのかな。 Csh-Again SHell とか。
166 名前:login:Penguin mailto:sage [2008/06/15(日) 12:53:50 ID:MYPOmB3X] >>165 生まれ変わらなくていい。そのまま墓場で寝ててくれ>*csh
167 名前:login:Penguin mailto:sage [2008/06/15(日) 12:56:31 ID:MYPOmB3X] >>164 トン。$(command)とか$((expr))って標準だったんだとか色々勉強になるな。
168 名前:login:Penguin mailto:sage [2008/06/15(日) 18:20:40 ID:ue0hzIrD] bashで文字列の最後尾が / にあたるものをヒットさせたいのですが、どのようにしたら宜しいでしょうか?
169 名前:login:Penguin mailto:sage [2008/06/15(日) 18:49:35 ID:LSl6/nZ+] bashにそんな機能はない
170 名前:login:Penguin mailto:sage [2008/06/15(日) 18:53:49 ID:aTr7Cyki] bash()笑
171 名前:login:Penguin mailto:sage [2008/06/15(日) 18:54:17 ID:2ND6A6mz] grepで$を使うって話?
172 名前:login:Penguin mailto:sage [2008/06/15(日) 19:14:12 ID:AOTtbX65] エスケプすればなんとでも。
173 名前:login:Penguin mailto:sage [2008/06/15(日) 19:23:37 ID:lWrIWsAm] >>168 case "$str" in */) echo "match." ;; *) echo "unmatch." ;; esac
174 名前:login:Penguin mailto:sage [2008/06/16(月) 02:02:05 ID:irk9chgy] >>168 です。仕事が入ってしまいレス遅れました、すいません。 bashにそのような機能はありませんか・・・。 grepでは無く条件式で文字列の末尾を判定させたかったのですが 何も知らない自分としては>>173 さんの書いて頂いたのを参考に しようかと思います。助かりました、有難うございます。
175 名前:login:Penguin mailto:sage [2008/06/16(月) 08:11:50 ID:JECOF4SI] >>169 に対する皮肉としか読めない。
176 名前:login:Penguin [2008/06/16(月) 11:27:24 ID:1Ms3xCVR] #!/bin/csh -f set s=$1 set t=$2 set f=$3 cat $f | tail +$s | head -$t exit 0 echo ------------------ 以上を改良しろ、と言われました。みなさんならどうしますか?どなたか教えて下さい。
177 名前:login:Penguin mailto:sage [2008/06/16(月) 11:28:31 ID:/AfhYEBu] >>176 *csh を使うのをやめる。まずそれからだ。
178 名前:login:Penguin mailto:Sage [2008/06/16(月) 12:44:56 ID:qvjZYD3V] >>176 速度面で改善ならアセンブリで書き直してやれ
179 名前:login:Penguin mailto:sage [2008/06/16(月) 13:59:17 ID:6AAfiJB4] >>176 とりあえずマルチをやめること
180 名前:login:Penguin mailto:sage [2008/06/16(月) 23:26:05 ID:gSPrzSdg] >>176 次に日本語を勉強すること
181 名前:login:Penguin [2008/06/17(火) 07:40:56 ID:AmqP2Db0] abc bcd cde <abc> hoge hoge (スペースはタブです) となっている場合、<abc>の列を削除したい場合 sed 's/\t//g' | sed "s/<abc>*//g" > hoge だとうまくいかないんですけどどこかおかしいんでしょうか。 ご指摘お願いします。
182 名前:login:Penguin mailto:sage [2008/06/17(火) 08:11:56 ID:+a7Qx5aV] >>181 sed 's/^<abc>.*//' * は「前のものの0回以上の繰り返し」。 シェルの glob と違って「任意の文字列」ではない。