|
Bシェルで、whileとreadを使ったファイルからの読み込み について教えてください。 while文の中の変数をwhile文の外で使いたいのですが、 以下の様に、whileとreadを使ってファイルから読み込み doをdoneの間で処理を行い、ループを抜けた後、doneの 後ろで、結果を表示させたのですが、正しく表示されません。 どうしたら正しく表示されますか。 環境 Solaris8 Bシェル --------------------------------------------------------- #!/bin/sh # num=0 while read line ; do echo $line num=`expr $line + $num` done < a.txt echo "-----" echo $num cat a.txt 1 2 3 4 5 6 7 8 9 10 |
|
Bシェルで、sedを使って、2行を1行にしているのですが上手く行きません。 改行している次の行で、半角スペースから始まっている行を、sedを使って 1行にしたいのです。 sed -e ':loop' -e '$b' -e 'N;/\n /{s/\n *//;b loop' -e '};P;D;b loop' file.txt としたのですが、最初に引っかかったのは、1行になるのですが、 それ以降のものは、1行になりません。 環境 Solaris8 Bシェル 内容 --------- [Fri Jan 1 00:00:00] 開始 [Fri Jan 1 00:00:00] INFO:あいうえお abcdefg [Fri Jan 1 00:00:00] INFO:あいうえお 1234567890 [Fri Jan 1 00:00:00] INFO:あいうえお aaaaaaa bbbbbb cccccc [Fri Jan 1 00:00:00] INFO:あいうえお ABC 1234 [Fri Jan 1 00:00:00] INFO:12345 [Fri Jan 1 00:00:00] INFO:ABCDE [Fri Jan 1 00:00:00] INFO:あいうえお [Fri Jan 1 00:00:00] 終了 期待する結果 ---------- [Fri Jan 1 00:00:00] 開始 [Fri Jan 1 00:00:00] INFO:あいうえお abcdefg [Fri Jan 1 00:00:00] INFO:あいうえお 1234567890 [Fri Jan 1 00:00:00] INFO:あいうえお aaaaaaa bbbbbb cccccc [Fri Jan 1 00:00:00] INFO:あいうえお ABC 1234 [Fri Jan 1 00:00:00] INFO:12345 [Fri Jan 1 00:00:00] INFO:ABCDE [Fri Jan 1 00:00:00] INFO:あいうえお [Fri Jan 1 00:00:00] 終了 実際の結果 --------- [Fri Jan 1 00:00:00] 開始 [Fri Jan 1 00:00:00] INFO:あいうえお abcdefg [Fri Jan 1 00:00:00] INFO:あいうえお 1234567890 [Fri Jan 1 00:00:00] INFO:あいうえお aaaaaaa bbbbbb cccccc [Fri Jan 1 00:00:00] INFO:あいうえお ABC 1234 [Fri Jan 1 00:00:00] INFO:12345 [Fri Jan 1 00:00:00] INFO:ABCDE [Fri Jan 1 00:00:00] INFO:あいうえお [Fri Jan 1 00:00:00] 終了 となります。 期待する結果を得たいのですが、どうすればよいですか。 |
|
>>5040 あきもと >>4776 zsh を参照してください。 >>5041 おう sed -e '$!N; s/\n \{1,\}//; P; D' file.txt でどうでしょうか? |
|
管理人さんへ 『User-Agent 統計』のページ (http://x68000.q-e-d.net/~68user/cgi-bin/view-browser.cgi) が『エラー : 内部エラーが起こりました。』となっているので お知らせします。 |
|
>>5042 zsh ありがとうございます。 教えて頂いたところに書いてある方法で 上手くいきました。 |
|
>>5042 zsh ありがとうございます。 上手くいきました。 |
|
はじめまして。ボンジーと申します。ハッキングのやり方を教えてください。しーローとなもので |
|
いつもUNIXコマンドでお世話になっています。 画像変換のconvertコマンドについてお伺いしたいことがあります。 私は今、趣味でサイトを作っています。 画像アップロードした際にGIFからjpgに変換させる処理にconvertを使っているのですが、 ファイル名の拡張子は.jpgになっているのですが、バイナリエディタで開いて確認するとGIFファイルのままです。 convertはImageMagickダウンロードしてきて新規インストールしたものです。 このページではGIFからJPGへの画像変換を紹介されていたのですが、 私のところと同じような現象がおこっていませんでしょうか。 http://x68000.q-e-d.net/~68user/unix/pickup?keyword=convert&target=command |
|
>>5056 Misaki そういう事象は聞いたことがないですが、ありうることとしては libjpeg のリンクがうまくいっていない、でしょうか (それにしても エラーが出るのではないかと思うのですが)。 変換前後のファイルを file コマンドで調べても、やはり gif でしょうか? |
|
>> 5057 早速、回答ありがとうございます。 fileコマンドでgifかどうか判別できるんですね! やってみたところGIFでした。 簡単に調べてみましたがlibjpegが上手く入っていなかったようです。 帰ったらもうちょっと詳しく調べてみます。 ldd結果 $/usr/bin/ldd /usr/local/bin/convert linux-gate.so.1 => (0x00110000) libMagickCore.so.3 => /usr/local/lib/libMagickCore.so.3 (0x00111000) libMagickWand.so.3 => /usr/local/lib/libMagickWand.so.3 (0x00427000) libz.so.1 => /usr/lib/libz.so.1 (0x0059a000) libpthread.so.0 => /lib/libpthread.so.0 (0x005af000) libdl.so.2 => /lib/libdl.so.2 (0x0056b000) libgomp.so.1 => /usr/lib/libgomp.so.1 (0x00523000) libm.so.6 => /lib/libm.so.6 (0x00571000) libc.so.6 => /lib/libc.so.6 (0x005c6000) /lib/ld-linux.so.2 (0x0040c000) librt.so.1 => /lib/librt.so.1 (0x0081e000) |