この問題が解けるかな?(ふふ

このエントリーをはてなブックマークに追加
1名無しさん@お腹いっぱい。
課題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
>>2
激しく同意。
>>2
激しく同意。
ほんと定期的に立つな・・・
誰かネタ職人が頑張ってるのか
61を読まずにヒキコ:01/11/13 13:26
7名無しさん@お腹いっぱい。:01/11/13 13:31
>>2
激しく同意。
8うひひ:01/11/13 13:37
>>1
今考えてますから待っててね。僕天才だし。
君は転載ってことで
9うひひ:01/11/13 13:54
>>1
課題1何だけど今日の曜日を永遠と出せばいいのかなぁ?
火曜日。
いつも火曜日でいいのかな?
echo 火曜日
んなわけないよね。
しゃっこうとかも出した方が言い?コッチのサイクルが難しいのよ
環境変数に無いからさぁ。
まぁ良いか。

現在の曜日ね。シェルスクリプト実行時の
正確に求めるとntpが肝だよなぁ。どっかに原子時計のntpサーバ5台くらい無い?
これ無敵にしておかないと今晩24:00にコンビニでマガジン買えないのよ
ロー村とあわせろ?
ダメダメ国際標準じゃないと課題なんだから
10いひひ:01/11/13 13:57
天災じゃないんですか?(イヒヒ
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 合計

(笑)
>>1よ。その宿題の提出期限はいつですか?

>>18-1001
宿題の提出期限が過ぎてから答えを書いてあげなさい。
18うひひ:01/11/13 19:24
>>17
本人に聞いても提出期限の申告にがサバ臭くなるから年開けてから書こうよ。

っていうか課題2はさぁ
今日何曜日?みたいな実務で全く役に立たないような課題1をふまえて
考えるに
factorの話もどっかにあったけど
両方に正数書けて答えがマッチしたら抜けるループじゃダメか?
素因数分解からやんのかぁ?

1君どーよ?
優しい人ばかりで(・∀・)イイ!!
20うひひ:01/11/13 20:22
>>18
とてもバカなこと書いてしまいました笑ってください。
サラシあげてもらっても結構です
車に乗るナリ非常に悲しい痛い18になったことに気がつきました
ちゃんと素因数分解使いますから許してください。factorで良いよな

明日からリアル厨房にカテキョ頼みます
21名無しさん@お腹いっぱい。:01/11/13 20:39
デーモン君ソース探検

  Λ_Λ   ピシ!   ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ∂/ハ)ヽヽ   ノ*;´∀`) < きゃあ!もっと煽ってー!!
 |ハ`∀´) ミ ./ (つ >>1つ》 \____________
 ⊂ S  つ〆  《( ̄__)__)
  人  Y      ∧∧∧∧
  し(_)      | M専用 |
231:01/11/13 23:30
どーも1です
自分文系なんですけど何を間違ったかUNIXの授業とっちゃって
先生の言ってる事がほっんとわからないんですよ。
他の生徒はみんなわかってるみたいなんですけど・・・
お願いします!!! どなたか親切なお方留年リーチの俺を救ってください!!!
24名無しさん@お腹いっぱい。:01/11/13 23:31
>>23
騙らないよ、そこ。
251:01/11/13 23:32
いや、まじ本物なんだけど(汗
つーかこのスレ先生に見つかったら
どーしよ(´д`;)
留年して UNIX と親密な関係になるってのはどうか
271:01/11/13 23:40
UNIXの勉強はじめよーかな
でもUNIXやってメリットってあるん?
28名無しさん@お腹いっぱい。:01/11/13 23:44
さーてネタスレ開始です
先生はまだ来ないんですか?
遅いなあ
30さあね:01/11/13 23:52
そんじゃ年明けにみんな一斉に回答ってことで
>>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
3736:01/11/14 04:46
ミスった。配列でいいじゃん。
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 ))"
39うひひ:01/11/14 13:03
>>36-37
すばらしい。もしオナゴだったらカテキョしてください。
僕は
#!/bin/sh
echo 火曜日
しか作れませんでした。
40名無しさん@Emacs:01/12/11 15:20
ohyo?
41名無しさん@Emacs:02/03/10 21:36
hoge
42 ◆uniX3Ars :02/09/22 12:41
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
>>45
留年したんか?
47山崎渉:03/01/15 13:28
(^^)
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は自作プログラムです。僕のホームページで公開していますので
#ぜひダウンロードして使ってください。
>>51
なぜ/usr/local直下に置くの?
つーかこれ、一年以上も保持しとくネタか?
クダ質です。

ある拡張子のファイルに無条件に
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;
}
6059:03/03/09 18:09
ギャ!インデントが全てなくなってしまったよ ウワァン
6156:03/03/09 19:29
神降臨!
そうですよね。ファイル吐き出すのに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
6256:03/03/09 19:32
ファイル名かえるの忘れた。ゲフンゲフン。
MS-DOSかよ! と思っている人が000013人程度いるに違いない。
6456:03/03/09 19:48
実行したのは紛れも無く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
6659:03/03/13 02:18
遅レスだが,自分は
0x13=19=023 という罠に落ちたようです。
あと,Unixではテキストモード,バイナリモードの区別は
必要なかったと思われ。
67山崎渉:03/03/13 16:51
(^^)
6856:03/03/13 21:36
なるほど。8進と勘違いでしたか。
gccでコンパイルかけてみてうまくいかず,次にbcc32でやってみて
それから気がつきました。13じゃなくって19だ,と。
bcc32はBorlandがただで配ってるWin32 C++Compilerでつ。
bcc32だとbinとtextの区別してるかもしれないです。
69山崎渉:03/04/17 12:25
(^^)
70あぼーん:あぼーん
あぼーん
71t-akiyama:03/05/19 13:34
携帯ゲーム機"プレイステーションポータブル(PSP)

 このPSPは、新規格UMD(ユニバーサルメディアディスク)というディスクを利用しており、そのサイズは直径6cmととても小さい(CDの半分程度)。 容量は1.8GBとなっている。
画面は4.5インチのTFT液晶で、480px x 272px(16:9)。MPEG4の再生やポリゴンも表示可能。外部端子として、USB2.0とメモリースティックコネクタが用意されているという。

この際、スク・エニもGBAからPSPに乗り換えたらどうでしょう。スク・エニの場合、PSPの方が実力を出しやすいような気がするんですが。
任天堂が携帯ゲーム機で圧倒的なシェアをもってるなら、スク・エニがそれを崩してみるのもおもしろいですし。かつて、PS人気の引き金となったFF7のように。
72あぼーん:あぼーん
あぼーん
73あぼーん:あぼーん
あぼーん
74あぼーん:あぼーん
あぼーん
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
79ところてん:2006/02/03(金) 22:45:12
ところてんーーーーーーーーーーーー、。
80名無しさん@お腹いっぱい。:2007/06/13(水) 12:28:30
1日でよくそんなに勉強ができたもんだね
すごいよ、えらいよ。実になってるかは別として
81名無しさん@お腹いっぱい。:2007/06/13(水) 23:18:09
スクリプトやらを作成する事で何日何時何曜日かが分かるわけか
82名無しさん@お腹いっぱい。:2007/06/19(火) 16:02:42
課題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"
8382:2007/06/19(火) 16:06:06
おっと、TABが反映されないのをうっかりしてたよ。
tr の最初の引数はスペースとTABだよ。
84名無しさん@お腹いっぱい。:2007/06/22(金) 23:27:19
>>82

wc -w ですな
8582:2007/06/24(日) 06:35:32
>>84
左様。
86名無しさん@お腹いっぱい。:2007/07/01(日) 10:42:45
#!/bin/sh

で $(...) だの $((...)) だの使うのはどうかと。
87名無しさん@お腹いっぱい。:2007/07/01(日) 20:20:36
>>86
気に入らなければ、適宜 ` ` とか expr に読み代えれば良い。

俺はそんなのは気持ち悪いが・・・
88名無しさん@お腹いっぱい。:2007/07/04(水) 13:32:57
>>50
問3は同じ中身をもっと簡単に書けるぞ。

wc -l "$@" | awk '$2 !~ /^total$/{print "file " $2" has " $1" lines."}'
89名無しさん@お腹いっぱい。:2007/07/13(金) 11:54:06
6年目に回答が寄せられたわけだが・・
1は結局卒業できたのだろうか
してたとしてもニートの可能性大だな
90名無しさん@お腹いっぱい。:2007/11/04(日) 11:33:40
#課題1

#今日の曜日を表示するスクリプト(dayofweek)を作成せよ。dateのマニュアルを~よく見る。
#% sh dayofweek
#Monday
#%
% LC_ALL=C date +%A
Sunday
91名無しさん@お腹いっぱい。:2007/11/04(日) 11:34:12
#パラメータとして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
}
92名無しさん@お腹いっぱい。:2007/11/04(日) 11:34:59
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
93名無しさん@お腹いっぱい。:2007/11/04(日) 11:35:41
#課題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
94名無しさん@お腹いっぱい。:2007/11/04(日) 11:38:09
#課題4

#パラメータとして2つのファイル名を受け取り、それぞれのファイルに共通する単語の数を表示するスクリプト(samewords)を作成せ
#よ。2つのファイルにそれぞれ含まれる単語の数と、2つのファイルをひとつにしたファイルに含まれる単語の数がわかれば...
#% sh samewords a b
#file a and b have 6 same words.
#%
#できた人は天才!!!!
95名無しさん@お腹いっぱい。:2007/11/04(日) 11:39:11

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.
96名無しさん@お腹いっぱい。:2010/03/24(水) 18:39:44
10年後の俺へ
元気でやってるか?SEになれてる?彼女できた?

頑張れよ俺
97か ◆c3uu/mE0SQ :2010/04/02(金) 19:35:29
ははは
98名無しさん@お腹いっぱい。:2012/05/05(土) 11:13:03.94
重複

シェルスクリプト総合 その19
http://toro.2ch.net/test/read.cgi/unix/1323515200/
99名無しさん@お腹いっぱい。
この問題が解けるかな?(ふふ