1 :
名無しさん@お腹いっぱい。 :
01/11/13 12:00 課題1 今日の曜日を表示するスクリプト(dayofweek)を作成せよ。dateのマニュアルをよく見る。 % sh dayofweek Monday % パラメータとして2つの整数を入力して、2数の最小公倍数を計算するスクリプト(lcm)を作成せよ。ただし、2数をx,yとしたとき、x・ y=gcd・lcmである。 % sh lcm 10 12 lcm of 10 and 12 is 60 % 課題3 パラメータとして複数のファイル名を受け取り、それぞれのファイルの行数を表示するスクリプト(listlines)を作成せよ。 % sh listlines a b c file a has 5 lines. file b has 9 lines. file c has 12 lines. % 課題4 パラメータとして2つのファイル名を受け取り、それぞれのファイルに共通する単語の数を表示するスクリプト(samewords)を作成せ よ。2つのファイルにそれぞれ含まれる単語の数と、2つのファイルをひとつにしたファイルに含まれる単語の数がわかれば... % sh samewords a b file a and b have 6 same words. % できた人は天才!!!!
ガッコの演習は自分でやれ。 sage
ほんと定期的に立つな・・・ 誰かネタ職人が頑張ってるのか
6 :
1を読まずにヒキコ :01/11/13 13:26
完
7 :
名無しさん@お腹いっぱい。 :01/11/13 13:31
>>1 今考えてますから待っててね。僕天才だし。
君は転載ってことで
>>1 課題1何だけど今日の曜日を永遠と出せばいいのかなぁ?
火曜日。
いつも火曜日でいいのかな?
echo 火曜日
んなわけないよね。
しゃっこうとかも出した方が言い?コッチのサイクルが難しいのよ
環境変数に無いからさぁ。
まぁ良いか。
現在の曜日ね。シェルスクリプト実行時の
正確に求めるとntpが肝だよなぁ。どっかに原子時計のntpサーバ5台くらい無い?
これ無敵にしておかないと今晩24:00にコンビニでマガジン買えないのよ
ロー村とあわせろ?
ダメダメ国際標準じゃないと課題なんだから
天災じゃないんですか?(イヒヒ
11 :
名無しさん@お腹いっぱい。 :01/11/13 14:37
$ cat dayofweek #!/bin/sh date '+%a' $sh dayofweek 火 (笑)
シェルスクリプトってさ、呼び出すコマンドを限定しないと 何でもアリになっちゃうよな。最小公倍数の問題だって、 多分互除法を実装しろってことだろうと思うけど、 mathematica呼び出せば一発だろうしなあ。
13 :
名無しさん@Emacs :01/11/13 16:38
>>12 っていうか、そういう発想が出来るかどうかの課題だったりして。
想像力ってやつですな
意図がみえみえで悲しい 1 だな
#!/bin/sh cat << EOF >foo.c 色々 EOF cc -o foo foo.c ./foo とか書けば、何でもできるしね。
課題3 $ alias listlines='wc --lines' $ listlines hoge hage 11 hoge 22 hage 33 合計 (笑)
>>17 本人に聞いても提出期限の申告にがサバ臭くなるから年開けてから書こうよ。
っていうか課題2はさぁ
今日何曜日?みたいな実務で全く役に立たないような課題1をふまえて
考えるに
factorの話もどっかにあったけど
両方に正数書けて答えがマッチしたら抜けるループじゃダメか?
素因数分解からやんのかぁ?
1君どーよ?
優しい人ばかりで(・∀・)イイ!!
>>18 とてもバカなこと書いてしまいました笑ってください。
サラシあげてもらっても結構です
車に乗るナリ非常に悲しい痛い18になったことに気がつきました
ちゃんと素因数分解使いますから許してください。factorで良いよな
明日からリアル厨房にカテキョ頼みます
21 :
名無しさん@お腹いっぱい。 :01/11/13 20:39
デーモン君ソース探検
Λ_Λ ピシ! ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∂/ハ)ヽヽ ノ*;´∀`) < きゃあ!もっと煽ってー!!
|ハ`∀´) ミ ./ (つ
>>1 つ》 \____________
⊂ S つ〆 《( ̄__)__)
人 Y ∧∧∧∧
し(_) | M専用 |
どーも1です 自分文系なんですけど何を間違ったかUNIXの授業とっちゃって 先生の言ってる事がほっんとわからないんですよ。 他の生徒はみんなわかってるみたいなんですけど・・・ お願いします!!! どなたか親切なお方留年リーチの俺を救ってください!!!
24 :
名無しさん@お腹いっぱい。 :01/11/13 23:31
いや、まじ本物なんだけど(汗 つーかこのスレ先生に見つかったら どーしよ(´д`;)
留年して UNIX と親密な関係になるってのはどうか
UNIXの勉強はじめよーかな でもUNIXやってメリットってあるん?
28 :
名無しさん@お腹いっぱい。 :01/11/13 23:44
さーてネタスレ開始です
先生はまだ来ないんですか? 遅いなあ
そんじゃ年明けにみんな一斉に回答ってことで
>>1 留年リーチなのは遊びすぎで単位足らんのと違うか?(W
つか、perlでもrubyでもいいんやね〜
やっぱり悲惨な1のいるスレ決定か。
文系でも勉強すればこのくらいわかる. というか, 理解しないで単位とろうという考え方がダメ.
ここで聞くより、友達の回答コピペすれば?
課題4 samewords --- #!/bin/sh ruby -e 'def f(n) f=Hash.new(0);for w in open(n).read.split(/\W+/);f[w]+=1 end;f.keys end;\ p((f($*[0])&f($*[1])).size)' $1 $2
ミスった。配列でいいじゃん。 samewords --- #!/bin/sh ruby -e 'def f(n) a=[];for w in open(n).read.split(/\W+/);a<<w end;a end;p((f($*[0])&f($*[1])).size)' $1 $2
#!/bin/bash x=$1 y=$2 (( $x < $y )) && { x=$2 && y=$1 ;} while (( $y != 0 )) do m=$(( $x - $(( $x / $y )) * $y )) (( $m < $y )) && { x=$y && y=$m ;} || { x=$m ;} done echo "lcm of $1 and $2 is $(( $1 * $2 / $x ))"
>>36-37 すばらしい。もしオナゴだったらカテキョしてください。
僕は
#!/bin/sh
echo 火曜日
しか作れませんでした。
40 :
名無しさん@Emacs :01/12/11 15:20
ohyo?
41 :
名無しさん@Emacs :02/03/10 21:36
hoge
t e s t
43 :
らうんじゃー :02/10/05 03:13
unixってなんだろうね?
宇宙からの物体雲丹エッ〜〜〜クス〜〜〜〜〜
45 :
名無しさん@お腹いっぱい。 :02/10/05 10:42
> % sh dayofweek
> dayofweek: 2: Syntax error: word unexpected (expecting ")")
うごかねえぞゴルァ!!
>>39
(^^)
48 :
名無しさん@お腹いっぱい。 :03/03/06 23:40
たすけてー
echo -e "\e[5m 金曜日 \e[0m"
50 :
名無しさん@お腹いっぱい。 :03/03/07 17:06
(^ ^)/。先生、問1と問3のみできますた。採点してください。 問1 #!/bin/sh DATE=`date | awk '{print $1}'` case "$DATE" in Sun) echo 'Sunday' ;; Mon) echo 'Monday' ;; Tue) echo 'Tuesday' ;; Wed) echo 'Wednesday' ;; Thu) echo 'Thursday' ;; Fri) echo 'Friday' ;; Sat) echo 'Saturday' ;; esac 問3 #!/bin/sh for i in "$@" do NUM=`wc -l "$i" | awk '{print $1}'` echo "file $i is $NUM lines." done
問1 #!/bin/sh /usr/local/week #weekは自作プログラムです。僕のホームページで公開していますので #ぜひダウンロードして使ってください。
つーかこれ、一年以上も保持しとくネタか?
クダ質です。 ある拡張子のファイルに無条件に 000013:0x00(0) と書きたいのです。 stdio.hとmath.hのごく一部のライブラリしか使ったことが無いのでCは 殆ど解りません。どなたか簡単に書いていただけると嬉しいです。お願いします。
>>54 000013:0x00(0)
を末尾に書くのか,先頭に書くのか,はたまた
内容をこれだけにするのか?
あるいは13byte目をヌル文字にしたい?
拡張子hogeのファイル全てに処理したい というのは
#!/bin/sh
for f in *.hoge;do
#処理内容
done
のようにすればできる。この程度ならスクリプトのファイル
を作らずにコマンドラインに直接書いてもよろし。
>あるいは13byte目をヌル文字にしたい? これです。特定の拡張子の13バイト目を無条件にnullにしたいのです。 ファイルは1個づつコマンド入力でも苦にならないのですが,いちいち バイナリエディタ開いてやるのが面倒なのでそんなプログラムがあれば いいなーと思った次第です。 とりあえず書けそうなところは #include<stdio.h> void main() { } くらいです。いや。マジです。 哀れな私にちょこちょこっとご教示願えると嬉しいです。
>>56 もうちょっとガンバレ
fopen,fclose,fputc,fseek
が使えればできる。答えは30分後に。
void main() → int main()
navi2chで書き込めなかったので,ブラウザから
>>58 おおむね同意
予告通りソースをup
こんなものでよろしいか?
#include<stdio.h>
#define MODIFY_OFFSET_BYTE 13
int modifyFile(char *fname)
{
FILE *fp;
if(!(fp=fopen(fname,"r+"))){
return -1;
}
if(fseek(fp,MODIFY_OFFSET_BYTE,SEEK_SET)){
fclose(fp);
return -1;
}
fputc('\0',fp);
fclose(fp);
return 0;
}
int main(int argc,char **argv)
{
while(*++argv){
if(modifyFile(*argv)){
perror(*argv);
}
}
return 0;
}
ギャ!インデントが全てなくなってしまったよ ウワァン
神降臨! そうですよね。ファイル吐き出すのにvoidなわけないですよね。 で,申し訳ないのですが上のやつをコンパイルしてみたんですが, どうもアドレス0000Dが00になっているようで,00013が00になってはいないようです。 そこで上の宣言を19バイト目にしたらちゃんと動きました。 それと,ちょっと手元にある解説書を読んでみたのですが,私の言葉足らずだったら すいませんが,バイナリで読み込んで更新するときはrb+となっていたので, 一番上の int modifyFile(char *fname) { FILE *fp; if(!(fp=fopen(fname,"r+"))){ ↑ここの"r+"をrb+に書き換えました。 その結果バッチリ動くようになりました。ありがとうございます。 最初 D:\>fc /b p.mld pa.mld ファイル p.mld と PA.MLD を比較しています 0000000D: 00 73 書き換え後 D:\>fc /b new.mld protect.mld ファイル new.mld と PROTECT.MLD を比較しています 00000013: 00 01
ファイル名かえるの忘れた。ゲフンゲフン。
MS-DOSかよ! と思っている人が000013人程度いるに違いない。
実行したのは紛れも無くsolaris9でつ。でも,そのファイルをいじれる環境が Windowsでしかないのでそれで試しました。 piyo% mach sparc piyo% uname SunOS piyo% arch sun4 piyo% 本当に助かりました。あとは自力で味付けしてみたいと思います。 bcc32で。いやいや。gccで・・・。
% dd if=/dev/zero of=filename bs=1 count=1 seek=19 conv=notrunc
遅レスだが,自分は 0x13=19=023 という罠に落ちたようです。 あと,Unixではテキストモード,バイナリモードの区別は 必要なかったと思われ。
(^^)
なるほど。8進と勘違いでしたか。 gccでコンパイルかけてみてうまくいかず,次にbcc32でやってみて それから気がつきました。13じゃなくって19だ,と。 bcc32はBorlandがただで配ってるWin32 C++Compilerでつ。 bcc32だとbinとtextの区別してるかもしれないです。
(^^)
あぼーん
携帯ゲーム機"プレイステーションポータブル(PSP) このPSPは、新規格UMD(ユニバーサルメディアディスク)というディスクを利用しており、そのサイズは直径6cmととても小さい(CDの半分程度)。 容量は1.8GBとなっている。 画面は4.5インチのTFT液晶で、480px x 272px(16:9)。MPEG4の再生やポリゴンも表示可能。外部端子として、USB2.0とメモリースティックコネクタが用意されているという。 この際、スク・エニもGBAからPSPに乗り換えたらどうでしょう。スク・エニの場合、PSPの方が実力を出しやすいような気がするんですが。 任天堂が携帯ゲーム機で圧倒的なシェアをもってるなら、スク・エニがそれを崩してみるのもおもしろいですし。かつて、PS人気の引き金となったFF7のように。
あぼーん
あぼーん
あぼーん
75 :
山じゃき 渉 :04/06/08 20:52
__∧_∧_ |( ^^ )| <ねばだ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄ このスレ1年近く書き込み内でつよ。たいむりーあげ。
コマンドラインでいいんだけれど、 ELIZAのように質問に答えを返すプログラムを作れないかな。 データの持ち方とロジックで、あたかも人間がチャットしているように できないかな?
77 :
名無しさん@お腹いっぱい。 :05/01/31 00:06:14
fool
78 :
名無しさん@お腹いっぱい。 :2005/10/04(火) 00:11:03
while read line do echo "はぁ?なんですか?" done
ところてんーーーーーーーーーーーー、。
80 :
名無しさん@お腹いっぱい。 :2007/06/13(水) 12:28:30
1日でよくそんなに勉強ができたもんだね すごいよ、えらいよ。実になってるかは別として
81 :
名無しさん@お腹いっぱい。 :2007/06/13(水) 23:18:09
スクリプトやらを作成する事で何日何時何曜日かが分かるわけか
課題4 #!/bin/sh - func() { tr ' ' '\n\n' | sort | uniq | wc -l } num1=$( cat "$1" | func ) num2=$( cat "$2" | func ) num3=$( cat "$1" "$2" | func ) echo "file $1 and $2 have $(( $num1 + $num2 - $num3 )) same words"
83 :
82 :2007/06/19(火) 16:06:06
おっと、TABが反映されないのをうっかりしてたよ。 tr の最初の引数はスペースとTABだよ。
85 :
82 :2007/06/24(日) 06:35:32
#!/bin/sh で $(...) だの $((...)) だの使うのはどうかと。
>>86 気に入らなければ、適宜 ` ` とか expr に読み代えれば良い。
俺はそんなのは気持ち悪いが・・・
>>50 問3は同じ中身をもっと簡単に書けるぞ。
wc -l "$@" | awk '$2 !~ /^total$/{print "file " $2" has " $1" lines."}'
89 :
名無しさん@お腹いっぱい。 :2007/07/13(金) 11:54:06
6年目に回答が寄せられたわけだが・・ 1は結局卒業できたのだろうか してたとしてもニートの可能性大だな
#課題1 #今日の曜日を表示するスクリプト(dayofweek)を作成せよ。dateのマニュアルを~よく見る。 #% sh dayofweek #Monday #% % LC_ALL=C date +%A Sunday
#パラメータとして2つの整数を入力して、2数の最小公倍数を計算するスクリプト(lcm)を作成せよ。ただし、2数をx,yとしたとき、x・ #y=gcd・lcmである。 #% sh lcm 10 12 #lcm of 10 and 12 is 60 #% if [ $1 -gt $2 ]; then a=$1 b=$2 elif [ $1 -lt $2 ]; then a=$2 b=$1 else echo lcm of $1 and $2 is $1 exit fi m() { expr $1 \* $2 }
a_value=$a a_int=1 b_int=1 while [ 1 ] do b_value=`m $b $b_int` if [ $b_value -gt $a_value ]; then a_int=`expr $a_int + 1` a_value=`m $a $a_int` elif [ $b_value -eq $a_value ]; then echo lcm of $1 and $2 is $b_value exit fi b_int=`expr $b_int + 1` done
#課題3 #パラメータとして複数のファイル名を受け取り、それぞれのファイルの行数を表示するスクリプト(listlines)を作成せよ。 #% sh listlines a b c #file a has 5 lines. #file b has 9 lines. #file c has 12 lines. #% for x in $* do echo file $x has `wc -l $x` lines. done
#課題4 #パラメータとして2つのファイル名を受け取り、それぞれのファイルに共通する単語の数を表示するスクリプト(samewords)を作成せ #よ。2つのファイルにそれぞれ含まれる単語の数と、2つのファイルをひとつにしたファイルに含まれる単語の数がわかれば... #% sh samewords a b #file a and b have 6 same words. #% #できた人は天才!!!!
a=$1 b=$2 count=0 for line in `cat $a`; do if [ -n "$line" ];then set $line for var in $*;do grep -w $var > /dev/null <<-! $seen ! if [ $? -eq 0 ];then continue fi grep -w "$var" "$b" > /dev/null if [ $? -eq 0 ]; then count=`expr $count + 1` fi seen="$seen $var" done fi done echo file $a and $b have $count same words.
10年後の俺へ 元気でやってるか?SEになれてる?彼女できた? 頑張れよ俺
97 :
か ◆c3uu/mE0SQ :2010/04/02(金) 19:35:29
ははは
この問題が解けるかな?(ふふ