[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 22:57 / Filesize : 109 KB / Number-of Response : 480
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合 その11



1 名前:名無しさん@お腹いっぱい。 [2008/05/20(火) 20:58:04 ]
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。


□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashなので特に注意。
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。

シェルスクリプト総合 その10
pc11.2ch.net/test/read.cgi/unix/1202725267/

112 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 10:28:37 ]
>>109 氏からの回答が欲しい場合は >>109 に従ってね。
でも俺はエスパーだから、OSとかバージョンとか書かなくても回答できちゃうよ。
気軽に質問してね。もち、Linuxユーザーの質問もOK。

113 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 11:14:08 ]
エスパー>>112からの回答が欲しい場合はエスパースレへ。
pc11.2ch.net/test/read.cgi/unix/1207042632/

前任のエスパーは質問者の環境壊して再インストールさせる低レベルだったけど、
>>112はそんなアホじゃないだろうと期待。

114 名前:名無しさん@お腹いっぱい。 [2008/05/30(金) 11:41:59 ]
カレントに移動しないと起動できないソフトがあります。
これを、カレントを移動しなくて済むようにするシェルはできませんか?
>>109 さん以外の方、回答をよろしくお願いします。

115 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 13:39:40 ]
CentOS bin/bashの条件式での質問です。

前提としまして、file1、file2、file3、file4という似たファイル名が
複数あるとします。
そこで条件式内で、[ -e file* ]
というようなfileから始まるファイルに一致させたいのですが
どのように記述したら宜しいのでしょうか?

116 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 13:40:52 ]
>>115
シェルスクリプト総合@LINUX Part4
pc11.2ch.net/test/read.cgi/linux/1210999497/

117 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 13:44:34 ]
>>115
そういう場合はlsの戻り値を使う。

if ls file* > /dev/null 2>&1 ; then
hoge
fi


118 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 13:45:16 ]
>>116
わからないなら黙ってろ

119 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 13:48:09 ]
>>116
スレ間違えてしまいすいません、誘導ありがとうございます。
>>117
lsの戻り値を条件式で使えたとは盲点でした。多少分からない
箇所がありますので調べつつ挑戦します。ありがとうございました

120 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 14:10:40 ]
>>118
わかっちゃいるけどやめられない



121 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 20:38:57 ]
>>114
普通に、

#!/bin/sh
cd /path/to/hoge
exec ./hogesoft "$@"

で桶。cdしてしまうように見えるが、シェルスクリプト自体が別シェルなので
カレントディレクトリは実行時のディレクトリから変わらない。

122 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 03:49:40 ]
こんなスクリプトを書いてプロセス監視&常時起動させていますが、
数時間走らせると、★の行を食ったまま、停止してしまいます。 orz
原因&解決策か、もしくはタイムアウトを設定する方法を
ご教示いただけませんでしょうか。。

#!/bin/sh
while true
do
★ret=`ps -ef | grep "collector.php" | grep -v grep | wc -l`
if [ $ret -eq 0 ]; then
php /hoge.php &
fi
sleep 1
done


123 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 06:14:58 ]
pgrepないの?

124 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 07:19:56 ]
>>122
まず、wc -lしたりretに代入したりしてるのが無駄。
grepは戻り値返すから、

if ps -ef | grep "collector.php" | grep -v grep > /dev/null; then

で桶。

125 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 07:34:52 ]
>>122
発想を転換しろ。
もし、php /hoge.phpを起動して、落ちたら再度起動、ってやりたいだけなら、

while :
do
php /hoge.php
done

だけでOK。&は付けない。sleepもpsも必要なし。

126 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 17:03:52 ]
>>123,124
ありがとう、おっしゃる通り。
試してみます。

>>125
惜しい。
実はhoge.phpは1種類ではなく、3種類存在します。
実際はret〜fi間が、3個あり、hoge1.php〜hoge3.phpを対象にチェックしています。
>>122のコードで、collector.phpとhoge.phpは同一です。コピペミススマソ。
#!/bin/sh
while true
do
★ret=`ps -ef | grep "hoge1.php" | grep -v grep | wc -l`
if [ $ret -eq 0 ]; then
php /hoge1.php &
fi
★ret=`ps -ef | grep "hoge2.php" | grep -v grep | wc -l`
if [ $ret -eq 0 ]; then
php /hoge2.php &
fi
★ret=`ps -ef | grep "hoge3.php" | grep -v grep | wc -l`
if [ $ret -eq 0 ]; then
php /hoge3.php &
fi
sleep 1
done

hoge1.php の終了を待たずに hoge2.php や hoge3.php の
プロセスチェック&起動を行いたいため、末尾に&を付けている次第です。

hoge1.php〜hoge3.php毎にシェルスクリプトを3個作成すれば
>>125の通りで期待が叶いますが、それはそれで無駄な感じがしまして。

127 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 17:23:55 ]
>>126
シェルスクリプトひとつでできる。
while文の最後のdoneに &を付けるのがポイント。


while :
do
php /hoge1.php
done &

while :
do
php /hoge2.php
done &

while :
do
php /hoge3.php
done &


128 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 18:12:48 ]
>>127
げ、すげぇ。できました。。プロセスが3つ立ち上がるのですね。
ありがとうございます!!
シェルスクリプトすごいっすねぇ。。。感動。

129 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 18:53:56 ]
質問: grep の -q オプションってどの grep(1) でも使えたっけ?

130 名前:名無しさん@お腹いっぱい。 mailto:age [2008/05/31(土) 18:55:12 ]
年中無休発狂妄想爆裂憤死寸前粘着真性キチガイ包茎池沼病気猿男(狂猿)◆QfF6cO2gD6による気違いカキコの続き:

初心者もOK! FreeBSD質問スレッド その95
pc11.2ch.net/test/read.cgi/unix/1210728872/706-708,710,712

706 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/05/31(土) 16:24:19
AAとコピペばっか

707 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/05/31(土) 16:25:33
アク禁報告を誰もしてないのが不思議w
してても無視されてるのか

708 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/05/31(土) 16:31:15
>>704
假性ですが何か?

710 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/05/31(土) 17:45:14
粘着キチガイ男(狂犬)をアク禁にしたらリアルに無差別殺人起こす可能性が高いからな。

712 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/05/31(土) 17:59:51
ビビって書き込み止めたのか?と煽ってみる
--------------------------------------------------------------------------------------------
UNIX板のあちこちのスレッドを荒らしている凶悪メンヘラ・真性キチガイ猿粘着◆QfF6cO2gD6。
いつも荒らしを憎むようなレスをするが、実際に荒らしているのは自分。
気色の悪い年中無休発狂粘着真性キチガイ包茎池沼病気猿男(狂猿)◆QfF6cO2gD6があちこちのスレに
遂に理解できないような基地害カキコをし始めた!気持ちが悪い…。



131 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 19:09:54 ]
>>129
unlike GNU grep, traditional grep did not conform to
POSIX.2, because traditional grep lacked a -q option and
its -s option behaved like GNU grep’s -q option. Shell scripts
intended to be portable to traditional grep should avoid both -q
and -s and should redirect output to /dev/null instead.

132 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 19:11:42 ]
ヘブライ語でおk

133 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 19:24:58 ]
要約すると、-qオプションがない古いgrepもあるから、
grep hoge > /dev/null にした方が移植性が高いってこと。

134 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 19:36:58 ]
>>131 >>133 Danke schoen

135 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 19:48:04 ]
Bitte schöen

136 名前:名無しさん@お腹いっぱい。 [2008/06/01(日) 08:07:21 ]
質問です。
5から10までの数字をランダムに、しかも2桁に揃えて表示させたい。
空欄を埋めてください。

#!/bin/sh

空欄

echo $randtime

137 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 08:12:38 ]
>>136

randtime=`expr 0$((RANDOM*6/32768+5)) : '.*\(..\)'`

138 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 16:33:54 ]
rand() {
    dd if=/dev/random bs=1 count=2 2>/dev/null | od -A n -t u
}
randtime=$(printf "%02d" $(( 5 + $(rand) % 6 )))

139 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 17:01:40 ]
純正シェル、かつ、printf(1)なし環境でも動く方法:

randtime=`expr 0\`expr \\\`date +%S\\\` % 6 + 5\` : '.*\(..\)'`

` `が3重ネストしてるので注意。

140 名前:名無しさん@お腹いっぱい。 [2008/06/01(日) 19:57:10 ]
(;ω;)たちけて〜
#!/bin/sh
i=0
while [ $i -le 23 ] ;do
time=`printf $i"%02d\n"`
i=`expr $i + 1`
echo $time
done

↓結果↓  ↓目的↓
000       0000
100              0100
200              0200
        ・・・略
1000            1000
1100            1100
        ・・・略
2300            2300

0000〜2300 最初から出力4桁にしたいでつ・・・ 
どこがおかしいのかおせいて〜(;ω;)ブワッ



141 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 20:02:40 ]
printf "%02d00\n" {01..23}

142 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 20:18:41 ]
>>140
i=0;while [ $i -le 23 ];do printf '%02d00\n' $i;i=`expr $i + 1`;done


>>141
bash依存失格。

143 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 20:33:37 ]
seqが使えるなら
seq -f "%02g00" 0 23

awkで書くなら
awk 'BEGIN { for (i = 0; i < 24; i++) printf("%02d00\n", i) }'

144 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 20:51:55 ]
printfがないOSもある。

i=0;while [ $i -le 23 ];do expr 0"$i"00 : '.*\(....\)';i=`expr $i + 1`;done

145 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 20:58:05 ]
exprはどこにでもあるの?

146 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 21:05:12 ]
exprもないOSのために、
純正シェルで、内部コマンドのみで実現。

z=0;set -;while [ $# -le 23 ]; do [ $# -ge 10 ] && z=; echo $z$#00; set "$@" d; done

147 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 23:56:19 ]
>>140でつ

>>141 エラーが出てしまった・・・・・・{01..23}の書き方はzshらしいです
>>142 でけた!
>>143 sedあります! あ、seqか 出来た出来たです!
>>144 printfあるけどその方法もでけた!
>>145 Linux/FedoraとCentには入ってましたSunOSや*BSDは存じ上げません
>>146 set の使い方がにくいですw

>>142-146 Grateful !!

148 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 00:13:39 ]
cat -n とか nl とか使う手もあるよね

149 名前:名無しさん@お腹いっぱい。 [2008/06/02(月) 01:37:46 ]
Bシェルで質問です。
あるディレクトリのstyファイルの文字コードを全てnkf -sで変換するシェルを作りたいのです。
しかし、全てのファイルに対して操作する方法がわかりません。
つまり、
nkf -s *.sty > *.sty2
mv *.sty2 > *.sty
rm *.sty2
みたいなことがやりたいんですが、この部分どうしたらいいのでしょうか。

150 名前:名無しさん@お腹いっぱい。 [2008/06/02(月) 01:58:11 ]
>> 149

for i in *.sty; do nkf -s $i > $i.sjis; mv $i.sjis $i; done




151 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 01:59:07 ]
find使う

152 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 09:07:16 ]
>>149
シェルってゆうな。クズ。

153 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:15:53 ]
>>149
nkf -s --overwrite *.sty

154 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:19:34 ]
シェルってゆうなってうるさい奴ってなんなの?バカなの?
スクリプトのスレなんだから分かるだろうが。氏ねよめんどうくせえ

155 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:23:38 ]
HDDのバックアップを効率的に行なうシェルを発光したいんですが、
初心者でも簡単にできますか?

156 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:25:29 ]
スルーできないやつってなんなの?

157 名前:名無しさん@お腹いっぱい。 [2008/06/02(月) 11:27:00 ]
お助けください。
.(ドット)で区切って後ろから1番目と2番目を抜き取るにはどうしたらいいでしょうか?

例えば
aaa.bbb.ccc.dddをccc.dddに置換したいです。

158 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:30:19 ]
>>157
sed 's/[^\.]*\.[^\.]*\.//'
cut -d. -f3-

159 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:32:03 ]
あ、前2つを削るんじゃなく後ろ2つを残すのか。

160 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:33:56 ]
>>157
hoge=aaa.bbb.ccc.ddd
expr $hoge : '.*\.\([^.][^.]*\.[^.][^.]*\)'

と言うシェルが発酵できます。



161 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:48:33 ]
純正シェル、内部コマンドオンリーバージョンを求めるなら、

hoge=aaa.bbb.ccc.ddd

IFS=.
set $hoge
while [ $# -gt 2 ]; do shift; done
echo $1.$2


162 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:52:17 ]
echo "aaa.bbb.ccc.ddd" | sed -e 's/^\(.*\)\.\([^\.]*\)\.\([^\.]*\)$/\3.\2/'

163 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:53:41 ]
ごめん。なんで \2 \3を入れ替えたんだろう?w
echo "aaa.bbb.ccc.ddd.eee" | sed -e 's/^\(.*\)\.\([^\.]*\)\.\([^\.]*\)$/\2.\3/'

164 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 12:38:02 ]
腐ってやがる 早すぎたんだ

165 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 13:11:19 ]
>>155
rsyncかddでググれ。
話はそれからだ。

166 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 13:18:04 ]
>>165
発光は?

167 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 17:16:08 ]
echo ^G

168 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 17:22:42 ]
vbell限定だた

169 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 17:24:11 ]
while :
do
xset led 1
sleep 1
xset -led 1
sleep 1
done

170 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 17:35:15 ]
for hoge in *.*.*
do mv $hoge $(echo $hoge |awk -F. '{print $(NF-1)"."$NF}')
done



171 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 17:36:25 ]
あ、違った

172 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 19:32:14 ]
banner をもっと長い文字列で使いたいんですが

173 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:28:24 ]
そうですか

174 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:34:12 ]
自分で発光したシェルをコマンド化するにはどうするんですか?
もしかして、コンパイルとか打つんですか?

175 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:39:12 ]
そーでーす

176 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:45:14 ]
ふたつのテキストファイルがあったとします。
テキストファイルの中の文章は単語が改行で区切られています。

$ cat 1.txt
apple
book
cat
desk
earth
fuck

$ cat 2.txt
april
born
cook
dinner
engine
fuck

1.txt と 2.txt で完全一致しているものを抽出するシンプルな方法を
探しています。何か良い方法ありませんか?

177 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:55:33 ]
sortしたものをdiffやcommに食わせるのが簡単だけど。
並べ替えアウト?


178 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:59:29 ]
それぞれ、中身に同じ行がないなら、
sort 1.txt 2.txt | uniq -d
かな

179 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 22:02:55 ]
>>177OKです。
>>178完璧です。ありがとうございました。

180 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 00:15:13 ]
sh -c 'echo $1' a b c
で、b が出るのは正常?



181 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 00:39:14 ]
正常

182 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 02:06:40 ]
>>158 >>160 >>161
ありがとうございました!感謝!

183 名前:名無しさん@お腹いっぱい。 [2008/06/03(火) 03:43:47 ]
質問です。
aaa=`commando1`
bbb=`commando2`
このような「``」内のコマンドを1つにまとめるにはどうしたらいいでしょうか?

例えば
#!/bin/sh

temp=`ls -l $1`
pram=`echo $temp | cut -d " " -f 6-8`
echo $pram

tempとpramで分けてるものを1行でまとめたいです。

184 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 04:07:13 ]
ネストすればいい。

185 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 06:53:17 ]
>>183
ネストする必要ない。というか、tempに入れる必要ない。

pram=`ls -l $1 | cut -d " " -f 6-8`

186 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 12:01:25 ]
>>184
一般論の話だろ。
その例に限れば、それでいいけど。

187 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 12:44:26 ]
POSIXシェルを仮定して「$()」使うのが正解。

188 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:08:58 ]
>>187
アフォか

189 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:12:22 ]
>>183
一般論として、

aaa=`command1`
bbb=`command2 $aaa`

なら、

bbb=`command2 \`command1\``

で桶。


190 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:17:54 ]
>>188
なんで?



191 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:19:05 ]
純正シェルで動かないから。
>>189 という正解があるのに、わざわざポータビリティを落す $()を使う必要ないから。

192 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:21:04 ]
>>191
可読性が落ちる。

193 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:22:50 ]
>>192
それはシェルに慣れてないお前だけ。

194 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:23:46 ]
3重、4重のネストが必要なときはどうするのだ? www
大半のシステムで使用できる$()を避けて可読性を劣化させる必要は無い。
このスレに巣食っている原理主義者以外は$()使うのが正解。

195 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:24:12 ]
>>181
一般論として仮定しちゃって良い?


196 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:24:13 ]
可読性を言うなら、むしろネスティングを避けて
一旦別変数に入れる方式の方がいいぞ。
>>183 の質問の逆をやれってことね。

197 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:24:53 ]
>>194
Solarisは大半のシステムじゃないのかい?

198 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:27:12 ]
Solaris?なにそれ、おいしいの?

199 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:34:17 ]
Solarisを見落としていた >>194 の負けだな

200 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:36:22 ]
>>194
3重ネストは \\\`command\\\`
4重ネストは \\\\\\\`command\\\\\\\`

何か問題ある?w



201 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:41:28 ]
Solarisならば、普通kshかxpg4シェル。

202 名前:名無しさん@お腹いっぱい。 [2008/06/03(火) 20:09:41 ]
質問させてください。

テキストファイルの内容が以下のようになっています。
日付 文字列

上記文字列に改行コードが存在する場合、以下のようになります
20080602 aaabbbccc
20080602 dddee
ef
ff
20080602 ggghhhiii

これをこのように正しく変換するにはどうしたらいいでしょうか?
20080602 aaabbbccc
20080602 dddeeefff
20080602 ggghhhiii






203 名前:名無しさん@お腹いっぱい。 [2008/06/03(火) 20:18:28 ]
202の続き

とりあえずない頭を絞って先頭文字が「2008」でない行に|を入れて以下のような
レイアウトにし

例)
20080602 aaabbbccc
20080602 dddee
|ef
|ff
20080602 g
|gg
|hhhi
|ii

過去ログにあったコマンドを参考に以下のコマンドを実行しましたが
「(rm a.txt; sed 'N; s/\n|//; P; D' > a.txt) < a.txt 」

例)
20080602 aaabbbccc
20080602 dddeeef
|ff
20080602 ggg
|hhhiii

と、いった感じですべて変換することができません。

よろしくお願いします。

204 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 20:41:47 ]
>>202
これでどうだ。
頭に余分な空行が出るのは無視してね


while read line
do
set $line
if [ $# = 1 ]; then
echo -n $1
else
echo
echo -n $1 $2
fi
done < file.txt
echo


205 名前:名無しさん@お腹いっぱい。 [2008/06/03(火) 21:33:33 ]
>>204
ありがとうございます。

すみません。わたしの記載漏れになりますが文字列の中にはスペースも存在します。
詳しく言いますとこの文字列とはSQLなのです。
なので「select * from table」のようになります。

せっかく考えて頂いたのにすみませんでした。



206 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 21:38:11 ]
後出し乙。これで回答を得られることはないであろう。

207 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 21:46:02 ]
わしが代わりに答えてあげよう。
正解のmd5じゃ。
9c42265ebade7ace4e45b75b8d41f7ab

208 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 22:45:18 ]
初心者な質問ですいません。
自分で書いたシェルをコマンドとして発光するにはどうするんですか?

209 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 22:47:26 ]
発酵させるには、ながーい時間がかかるよ

210 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 23:22:26 ]
>>207
お題を自分で解いた(かもしれない)だけで、答えたことになってないよな




211 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 06:27:08 ]
>>207
そのmd5逆算したところ、確かに動きました。感謝です。

212 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 07:33:03 ]
すげぇなおい






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<109KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef