シェルスクリプト総合 ..
175:login:Penguin
09/07/30 20:37:05 w4YhvOQC
>>172
両方とも試してみたって、どうやって試したん?
176:login:Penguin
09/07/30 21:09:43 neY1QnOU
シェルスクリプトに詳しいみなさんに聞きたいのですが、
ユーザ追加して第三者に利用させるときに
これ禁止させておけばよい、といったコマンドありますか?
例えば find などです。
177:login:Penguin
09/07/30 21:17:05 otd/7QOf
>>176
シェルの内部コマンドだけで相当できるから考えるだけ無駄。
178:login:Penguin
09/07/30 21:17:21 uCTsIRNg
なんでfindはだめなの?
TOMOYO入れたら?
179:login:Penguin
09/07/30 21:25:06 wVBjHvC9
>>174
コマンドラインに収まらなくてもいいのなら、zenityは?
echo -e "選択肢1\n選択肢2\n選択肢3" | zenity --list --column="項目"
180:login:Penguin
09/07/30 23:35:05 zSR6vlNV
>>174
bash 限定でいいなら、
select i in "Yes" "No" "Cancel"; do
[ -n "$i" ] && break
done
case "$i" in
Yes) echo "$i, we can.";;
No) echo "$i, it's so hard.";;
Cancel) echo "...";;
esac
181:login:Penguin
09/07/31 00:19:11 eB5hWQQH
$(ls)
と
`ls`
は同じと考えていいの?
182:login:Penguin
09/07/31 01:07:21 dqFrtp13
よくない
183:login:Penguin
09/07/31 08:21:07 Q0h6j6GB
同じじゃないのか?
184:174
09/07/31 10:38:52 unqMPfm1
>>179
zenityもcommand not foundって言われてしまったので入ってないようです。
ですが選択肢としていろいろと勉強になりました。
ありがとうございます。
>>180
サンプルありがとうございます。
大変勉強になりました。
bash限定ならこのあたりが限界っぽいですね。せめて項目の文字を色分け出来るくらいはしたかったですが
モジュール追加出来ないからって事で先方にはあきらめてもらうようにします。
185:login:Penguin
09/07/31 10:47:53 dFOhVUdW
>>182
どう違うの?
186:login:Penguin
09/07/31 11:03:30 JVm6T/2T
Bashで設定を変更するものを作ってるんですがCtrl + C とかでプロンプトに抜けられないようにするにはどうすればいいんでしょうか?
187:login:Penguin
09/07/31 11:08:16 dFOhVUdW
>>186
trap
188:186
09/07/31 11:16:14 JVm6T/2T
>>187
ありがと。
出来ました。
189:login:Penguin
09/07/31 16:40:28 YezVKpJb
コンフィグ情報から
DEVICEとIPADDRだけを抜き出したいのですが下記だとDEVICEの行が5行表示され
ます。
構文が間違っているからだと思いますがアドバイスもらえないでしょうか。
eth0=/etc/sysconfig/network-scripts/ifcfg-eth0
while read eth0
do
echo $eth0 | sed -n '/DEVICE/p' /etc/sysconfig/network-scripts/ifcfg-eth0
done < /etc/sysconfig/network-scripts/ifcfg-eth0
190:login:Penguin
09/07/31 16:49:00 Q0h6j6GB
sed -n '/DEVICE/p;/IPADDR/p' /etc/sysconfig/network-scripts/ifcfg-eth0
191:login:Penguin
09/07/31 16:51:37 dFOhVUdW
なんで何度も /etc/sysconfig/network-scripts/ifcfg-eth0 を書いてんだろ。
192:login:Penguin
09/07/31 16:52:11 sKGfGulX
>>189
答え先に書かれちゃったか。
1行目のeth0はどこで使ってるの?とか、whileでループさせる意味は?とか
ちょっと落ち着いて考えた方が良い
193:login:Penguin
09/07/31 16:56:53 IvZ7j8yJ
>>189
今後の為に基礎から勉強しなおしてきた方がいいよ
194:login:Penguin
09/07/31 16:57:14 6mUE4jrQ
> 1行目のeth0はどこで使ってるの?とか、whileでループさせる意味は?とか
> ちょっと落ち着いて考えた方が良い
落ち着いて考えてもわかんねーよ
1行目のeth0がどこにも使われてないのはわかるけど
195:189
09/07/31 17:37:11 YezVKpJb
みなさん回答ありがとうございます。
改めて見ると意味わからないことしてました。
下記のコードで意図する事ができました。
ありがとうございました。
while read
do
echo | sed -n '/DEVICE/p;/IPADDR/p' /etc/sysconfig/network-scripts/ifcfg-eth0
break
done < /etc/sysconfig/network-scripts/ifcfg-eth0
196:login:Penguin
09/07/31 17:45:29 sKGfGulX
>>195
全力で釣られてやる。
>>190 さんが書いてるように、sed1行でいける
sed -n '/DEVICE/p;/IPADDR/p' /etc/sysconfig/network-scripts/ifcfg-eth0
whileしたあげくに無条件でbreakとか意味わからん。
各行で何をしているのかもう少し考えよう
197:login:Penguin
09/07/31 20:49:41 M2gWEg8T
>>195
まずその「よく分からないけどとにかく丸写しでそれらしく作っとけばいいだろう」
という思想を改めるべきだな。
198:login:Penguin
09/07/31 21:59:52 JVm6T/2T
何やら上でもsedの質問出てますが質問させてください。
sedでtet.txt内にあるhogeをhogehogeに書き換えるものをつくりました。
sed -i 's/hoge/hogehoge/g' /tmp/test.txt
次にhogeとhogehogeの部分を変数にしたのですが今度は書き換わってくれません。
$aにはhoge
$bにはhogehoge
sed -i 's/$a/$b/g' /tmp/test.txt
test.txtを見ると更新はされているので何らかのアクションがあるみたいなんで
すが何か指定方法間違ってますでしょうか?
199:login:Penguin
09/07/31 22:03:23 Y1b6fdMF
sed -i "s/$a/$b/g" /tmp/test.txt
200:login:Penguin
09/07/31 22:06:26 Gbr9waoH
>>199
""だとシェル変数展開されないっすか?
201:sage
09/08/01 01:27:09 2gkCvOw5
シェルでリスタートとかかけると
活性化しますとか表示されるんですが、これ表示させないようにする方法ありますか?
/dev/nullとかしても表示されたので表示させない方法あれば教えてください。
202:login:Penguin
09/08/01 01:38:27 MXySzGMG
>>201
使ってるディストリのスレへ。
203:login:Penguin
09/08/01 02:29:31 SZCdXM7k
>>198
$ a='hoge'
$ b='hogehoge'
$ cat >/tmp/test.txt
hogepiyo$a$b$c
$ sed -i 's/$a/$b/g' /tmp/test.txt
$ cat /tmp/test.txt
hogepiyo$b$b$c # hogeはそのまま、$aは$bに。
$ cat >/tmp/test.txt
hogepiyo$a$b$c
$ sed -i "s/$a/$b/g" /tmp/test.txt
$ cat /tmp/test.txt
hogehogepiyo$a$b$c # hogeがhogehogeに、$aはそのまま。
204:login:Penguin
09/08/01 04:42:15 SZCdXM7k
>>181
入れ子のとき注意がいる。
$ echo $(echo a:$(echo b:$(echo c:$(echo d))))
a:b:c:d
$ echo `echo a:`echo b:`echo c:`echo d````
a:echo b:c:echo d
$ echo `echo a:\`echo b:\\\`echo c:\\\\\\\`echo d\\\\\\\`\\\`\``
a:b:c:d
205:login:Penguin
09/08/02 01:23:15 tM/nSNrk
画面を切り替えたりするとselect文が数行表示されない(実際には選択は出来る)ことが
よくあるんですが、データの受信が表示までに間に合ってないような感じです。
これを避ける方法などはあるんでしょうか?
使用しているターミナルはPoderosaになります。
206:login:Penguin
09/08/03 09:09:05 J0mTyN5X
今までbashでスクリプト組んで表示はExiteで翻訳とか適当にコピペってたのですが
シェルスクリプトって日本語表示出来ますか?
お偉いさんが英語じゃわからんとかぬかしやがったので・・・
207:login:Penguin
09/08/03 09:14:24 +8DYA08E
>>206
文字コード決めうちでよければ比較的簡単だな。
問題はそれで表示できるかどうかは実行する人が
使ってるターミナルに依存するということだ。一般的に
やろうとするとロケール見て切り替えみたいなことを
しなきゃならないが結構面倒だね。
ま、お偉いさんの環境に合わせておけばいいんじゃね?
208:206
09/08/03 09:29:50 J0mTyN5X
>>207
やっぱりそうですよね。
アクセスしてきたターミナルの文字コードを判別してとか切り替えられればいいんですが
さすがに無理ですよね。
お偉いさんだけじゃなくてユーザーも使うんで文字コードって混在してるんですよね。
標準的な文字コードってどんなの使われてるのかはよくわかりませんが
まぁ無理って方向で進めていこうかと思います。
ありがとうございます。
209:login:Penguin
09/08/03 09:57:12 pu8sCNil
ローマ字でいいんじゃね。
210:login:Penguin
09/08/03 10:31:49 3RzsW8i/
exciteのわけわからん翻訳貼り付けるのは
ユーザーが可哀想だろw
自分の英語に自信が持てないなら、いっそ日本語の方がいいんじゃね。
そのディストリビューションで日本語選んでインストールしたとき
デフォルトになる文字コード選んどけば
誰も文句いわないんじゃね?
自分でLANGいじるようなやつは、文字化けのなおしかたぐらい知ってるだろ。
211:login:Penguin
09/08/03 10:52:42 3RzsW8i/
なんか変だ。
ユーザー作ったときデフォルトでなってる文字コードにしとけばいいんじゃね、だ。
LANGとかLANGUAGEとかいじるやつは文字化けの直し方ぐらい知ってるだろ。
デフォルトがCとかenとかなら…シラネ
212:login:Penguin
09/08/04 12:15:50 OyyR8ocQ
動けばいいって程度で作ってたものをどうやら他にもリリースするとかで見栄えをよくしろと言われました。
bashで文字を寄せたり全体を中央寄せにしたりするコマンドとか関数ってありますか?
213:login:Penguin
09/08/04 12:53:29 h5jokg18
COLUMNS見て計算する。
いっそwhiptailやdialog使うとかな。
214:login:Penguin
09/08/04 21:45:57 1cLNSoFd
printf ?
あとよく知らないけど fmt とか groff とか?
215:212
09/08/04 22:25:14 OyyR8ocQ
>>213
文字数はじき出して何とか出来ました。
あとスクリプトの中で
/etc/rc.d/network restart
といれているんですが、手動で/etc/rc.d/network restartすると大丈夫なんですが
#!/bin/bash
/etc/rc.d/network restart
とかで実行するとshould not be world writeable users cannnot control this device
と表示されて実行されていないようです。
権限の問題かと思い色々と変えてみましたがダメでした。
なにか他に注意すべき点があればご教示いただければと思います。
216:login:Penguin
09/08/04 22:32:07 ACq2bWOB
> 色々と変えてみましたがダメでした。
そりゃダメだろうな。
217:login:Penguin
09/08/04 22:49:56 p9z/5JkD
もしかして: should not be world writable users cannot control this device
218:212
09/08/05 09:09:45 Sso6+/38
>>217
すいません
スペル間違えてました。
217で記述されている内容が表示されておりました。
219:login:Penguin
09/08/05 09:38:19 gztfuFMV
いろいろgrepしたけどうちのマシンには
そのメッセージを吐くプログラムは入ってないようだ。
ディストリビューションと、どのプログラム/スクリプトが
そのメッセージ出してるか書けば?
ちなみにそのスクリプトはrootで実行してるんだよね?
220:212
09/08/05 10:47:05 Sso6+/38
>>219
すいません。
CentOS5.3 です。スクリプト内容は膨大なのですがエラーが出る場所は
/etc/rc.d/init.d/network restart
の部分になります。
実行しているのは別のユーザーでてっきりrootで実行してるもんだと思ったら別ユーザーで実行していたようです。
ファイルは
-rwxr-xr-x 1 root root 1234 7月 31 00:00 test.sh
実際に実行していたログインユーザーはtestというユーザーでした。
上記の事とエラー内容から権限がないために出ていると思います。
testユーザーでもrestartをかけれる権限を付与するか、testユーザーを
rootのグループに入れるような事が出来れば出来そうな気もしますが自分には少しレベルが高そうですね。
221:login:Penguin
09/08/05 13:12:18 gztfuFMV
のりピーが心配で仕事が手に着かない。
init.dのスクリプトは一般ユーザーが使うようには出来てない。
仮にパーミッション緩めまくって実行できるようにしても、
インターフェースの設定はuid=0じゃないと出来ないので
どこかで権限を昇格するかrootのプロセスに引き継ぐかしないと行けない。
具体的な実装方法の話に入ると、
そもそも一般ユーザーがインターフェースupdownする必要が
本当にあるのかという事から検討したくなって
長くなりそうなのでとりあえずがんばれと言っておく。
222:219
09/08/05 13:35:06 Sso6+/38
>>221
ありがとうございます。
ネットワークの設定を一般ユーザー(といっても特定のユーザーのみですが)
が出来るようにしたいと思っております。
そんなに頻繁にあるわけではないのですがroot権限を持ったものが常駐しているわけでは
ないということもありましたのでネットワーク周りだけを触るスクリプトを組みました。
権限の昇格やrootのプロセスをシェルスクリプトで引き継げるようであれば行いたいと思います。
ご存じのかたおられましたらアドバイスいただけると助かります。
223:login:Penguin
09/08/05 14:02:44 gztfuFMV
そのぐらいならsudoでどぞ。
224:login:Penguin
09/08/05 21:35:22 dz5dEKuL
>>222
ifcfg-eth0とかに「USERCTL=yes」でroot以外でもできそう
URLリンク(www.redhat.com)
225:login:Penguin
09/08/08 16:14:34 Nnr+lme9
rebootやshutdownはrootでなくても使用できるんでしょうか?
試しにrootではないsampleユーザーで
#!/bin/bash
reboot
を実行させたら再起動かかったんですが、てっきり弾かれるかパスワード聞かれると思ってました。
上のほうで権限がどうのこうのって質問があったんですが、OSとかによって違うってことですかね。
226:login:Penguin
09/08/09 11:26:19 1P+Q9AS+
そんなのあんの?
rebootやshutdownは管理者権限だろ
227:login:Penguin
09/08/09 11:34:22 IkGSFCMm
sudoersに書いてたとしてもsudo rebootじゃないと駄目だろうし
何だろ
228:login:Penguin
09/08/09 11:46:08 0aZIEnpY
>>225
rebootはできてもshutdownはできないんじゃない?
229:login:Penguin
09/08/09 12:55:17 aaFRdfIZ
ディストリ次第じゃないんですか。Debian ではできないみたいだけど、Vine では
一般ユーザでも shutdown できる (Red Hat 系はみんなできるのかも)。Vine の場合、
/usr/bin/shutdown はシェルスクリプトで、中で halt や reboot を呼び出している。
そして、この halt や reboot はリンクで、実体は /usr/bin/consolehelper。
あとは、man consolehelper ですね。
230: ◆Zsh/ladOX.
09/08/09 14:01:11 /ZeBm1qf
んーできない。
% cat /etc/redhat-release
CentOS release 5.3 (Final)
% id
uid=500(hage) gid=500(hage) 所属グループ=500(hoge) context=user_u:system_r:unconfined_t
% /sbin/shutdown -r now
shutdown: you must be root to do that!
% /sbin/reboot
reboot: must be superuser.
231:229
09/08/09 14:18:48 PRPNML+y
>>230
CentOS の場合、/sbin/shutdown じゃなくて、/usr/bin/shutdown はないんですか。
だとしたら、Vine だけなのかな。たしか、「一般ユーザに電源をぶち切られるより、
shutdown を許した方がマシだ」という考えだったと思います。
232: ◆Zsh/ladOX.
09/08/09 14:27:23 /ZeBm1qf
% /usr/bin/shutdown -r now
zsh: そのようなファイルやディレクトリはありません: /usr/bin/shutdown
% locate shutdown|grep bin
/sbin/shutdown
/usr/bin/pm-shutdown
なんで無いね。
233:login:Penguin
09/08/09 16:35:29 CB8fkMOP
# ながいこと Vine しか使ってないから他のディストリのことはわからない。
>>225
シェルスクリプトの "reboot" を
/sbin/reboot とか /usr/bin/reboot とかに書き換えてみると動作に違いがでると思う。
> 権限
pam って仕組みで管理されてると思う。/etc/pam.d/ 以下のファイル。
>>225-232
Vine だと usermode っていうパッケージに
/usr/bin/consolehelper
/usr/bin/halt
/usr/bin/poweroff
/usr/bin/reboot
/usr/bin/shutdown
/usr/sbin/userhelper
とかいったものが入ってる。usermode-gtk ってパッケージもある。
Description :
usermode パッケージには、一般ユーザが設定されたプログラムをスーパーユー
ザとして実行できるようにするユーザヘルパープログラムが含まれています。
234:login:Penguin
09/08/09 22:04:40 ivLlFzN/
シェルスクリプトでコマンド番号を選択したりIPを入力したりするツールつくったんですが、
ctrl+cやIP入力にコマンドを入れてみて実行されるかどうかといった確認はしてみましたが
それ以外にセキュリティやテストしてみるといいことなどあれば教えてください。
235:login:Penguin
09/08/09 22:52:55 C0J3iJDt
スクリプト晒して!
236:login:Penguin
09/08/09 23:03:57 IVuBeWRI
晒されても答えようがないような。
C-c が入れられたときの正しい処理とか本人でないと知らないし。
237:234
09/08/09 23:20:52 ivLlFzN/
>>235
IP以外の文字が入れられたらといった時の処理はまだいれてませんが
下記のような事を繰り返してconfを書き換えて再起動するという感じです。
read newip
$newip="IPADDR=""$newip"
sed -i "s/$oldip/$newip/g" /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/rc.d/init.d/network restart
menufunc
238:login:Penguin
09/08/10 00:04:28 CdStD5IJ
>>227
sidを知らんのか。
239:login:Penguin
09/08/10 01:28:19 qfqY90wM
a
b
c
...
と一語ごとに改行された一つのテキストファイルを
a b c d e f g h i j k
l m n o ...
と言うように10列ごとに改行するテキストにしたいと思い、
スクリプトを組んだのですが動作が遅く、重くなってしまって困惑しています
どなたかお知恵をお貸しくださると助かります。
#/bin/bash
FILE=$1
LINENUM=`expr 1`
OFILE=/dev/shm/hoge
while read line
do
if [ $LINENUM -lt 10 ];then
echo -n "$line" >> $OFILE
echo -n -e "\t" >> $OFILE
LINENUM=`expr $LINENUM + 1`
else
echo "$line" >> $OFILE
LINENUM=`expr 1`
fi
done <$FILE
240:login:Penguin
09/08/10 01:50:52 vmT7yJCz
#!/bin/sh
FILE=$1
OFILE=/dev/shm/hoge
LINENUM=1
while read line
do
if [ $LINENUM -lt 10 ]
then
echo -n "$line"
echo -n -e "\t"
LINENUM=$(( LINENUM + 1 ))
else
echo "$line"
LINENUM=1
fi
done <$FILE >$OFILE
241:login:Penguin
09/08/10 02:00:08 qfqY90wM
>>240
ありがとうございます! 処理が覿面に早くなりました!
いちいち書き出さないで最後に一括して書けばよかったんですね…
242:login:Penguin
09/08/10 02:10:30 vmT7yJCz
>>241
たぶんexprの呼び出しのほうがコストが高いよ
243:login:Penguin
09/08/10 12:26:13 5IcilgjJ
自分で動かすだけならこれでいいやと思ったら、そんだけで改善できたのか…
----
#!/bin/sh
FILE=$1
OFILE=/dev/shm/hoge
sed -e '$!N;$!N;$!N;$!N;$!N;$!N;$!N;$!N;$!N;s/\n/\t/g' <$FILE >$OFILE
244:login:Penguin
09/08/10 15:31:57 oeYkUDqx
数字の判定は[0-9]と正規表現使って判定してるんですが
IPアドレスかどうかの判定が出来るような正規表現ってあるんでしょうか。
無い脳みそひねってもいい案が出なかったのであれば教えてください。
245:login:Penguin
09/08/10 15:41:18 86RyWVEw
>>244
ググレばサンプルたくさんあるよ。
246:login:Penguin
09/08/10 15:59:59 BhLss4cE
お前ならどうするかを教えてやりゃーいいじゃん。
247:login:Penguin
09/08/10 16:10:10 sXOG+s90
PowerShell神すぎだろ。
このスレ見てると原始人が石斧振り回してるように見えてくるぜ。
248:login:Penguin
09/08/10 17:33:20 6xgY8KY4
僕には端末エミュとシェルの違いもわかってないマヌケが見えます。
249:login:Penguin
09/08/11 00:20:03 GKnhcfe3
>>247
型の概念が邪魔。
コマンドが無駄に長い。
重い。
250:login:Penguin
09/08/11 00:27:50 4esITO9l
Macのbashもここでいいんでしょうか…
OSは10.5.8です。
test.shを
----
#!/bin/sh
echo $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12
----
とします。
./test.sh 1 2 3 4 5 6 7 8 9 10 11 12
と実行すると素直に
1,2,3,4,5,6,7,8,9,10,11,12
となるのに
./test.sh 1.0 2 3 4 5 6 7 8 9 10 11 12
と小数を入れて実行すると
1.0,2,3,4,5,6,7,8,9,1.00,1.01,1.02
となってしまうのはなぜでしょうか。
251:login:Penguin
09/08/11 00:35:21 XDXqx0+D
./test.sh a 2 3 4 5 6 7 8 9 10 11 12
としてごらんなさい
252:login:Penguin
09/08/11 01:01:07 4esITO9l
>>251
な、な、な、なんでしかこりは!
はっ!そうか!…
$1,$2...って書いてあるサイトが多いからけっこうな個数使えるのかと思ってました。
ありがとうございました。
253:login:Penguin
09/08/11 01:07:27 e9ttEiKp
echo $1,$2,$3,$4,$5,$6,$7,$8,$9,${10},${11},${12}
254:login:Penguin
09/08/11 02:19:40 4esITO9l
>>253
$(10)は試したのに${10}は試してませんでした…orz
ありがとうございます。
>>251を受けてshiftを使う対処法を知りました。
10個以上の引数を扱いたいという目的においては、shiftと${10}の善し悪しはあるんでしょうか。
255:login:Penguin
09/08/11 02:26:00 MclIhwRq
こーいうトラップがあるからperlに逃げる人が多い
256:login:Penguin
09/08/11 02:52:40 e9ttEiKp
>>254
$ man bash
/位置パラメータ
2 桁以上の数値を含む位置パラメータを展開するときには、ブレース ({}) で
囲まなければなりません。
よって${n}が正解だと思います
257:login:Penguin
09/08/11 05:29:40 4esITO9l
>>255
僕はこのツンデレな感じが好きです。
>>256
やっぱりそうですよねw
正式名称は位置パラメータかー"引数"という呼び方しか認識してませんでした。
258:sage
09/08/11 16:31:12 ggsX9yQb
topコマンドの内容をテキストに書き出したいんですが
top >> /tmp/top.test
とした場合に延々と書き込まれていきます。1度だけtopの内容を取得したいんですが
どのように変更すればよいでしょうか?
259:login:Penguin
09/08/11 16:36:53 zgCywBrU
>>258
man top
260:258
09/08/11 17:33:42 ggsX9yQb
>>259
すいません。
manにありました。
現在topの内容をテキストに書き出して、テキストをsedで切り出して表示してるんですが
コマンドの戻り値を求めたいと思っておりますが
hogera=$(top -i -n1)
cpu=`sed -n '/Cpu(s)/p' "$hogera"`
こうすると「読み込めません: ファイル名が長すぎます」と出ます。
本来ファイル名の指定なのでうまくいかないのはあたりまえなのですが、
ファイルに書き出す事無くスマートに切り出す方法がありましたら教えてください。
261:login:Penguin
09/08/11 17:42:23 zgCywBrU
>>260
いまいちやりたいことがわからんが
cpu=`top -b -n1 | grep '^Cpu'`
か?
262:258
09/08/11 17:54:30 ggsX9yQb
>>261
ありがとうございます。
そうか、grepすればいいだけの事ですね。
どうやら無意味にテンパってしまってるようです。
すいません。最後に1つだけ疑問に思っていることがあるのですが
シリアルコンソールで見る画面は横70文字にしとけって言われたんですが
何かそういった規格かなにかあるんでしょうか。検索してみてもそられしいものが
引っかからなかったんですが、70文字だとなかなか厳しいものがあるので
特に根拠のない文字数であるなら超えても構わないのではないかと思っております。
たびたびの質問で申し訳ありませんが、識者の方でご存じの人いたら教えてください。
263:login:Penguin
09/08/11 17:55:36 zgCywBrU
>>262
スレ違い。
264:258
09/08/11 18:03:42 ggsX9yQb
>>263
解答ありがとうございます。
スレ違いとのことですが、これはどういったスレで質問するのがよろしいのでしょうか。
シェルスクリプトの表示だったのでこちらに投げさせていただいたのですが
どういった方面のスレかだけでも助言いただけないでしょうか。
265:login:Penguin
09/08/11 18:07:41 zgCywBrU
>>264
くだらねえ質問はここに書き込め! Part176
スレリンク(linux板)
266:login:Penguin
09/08/12 00:03:08 0UM4nevW
>>263
きびしー
267:login:Penguin
09/08/12 00:05:03 I1tOnENr
>>264
VGAとかSVGAとか解像度で違うっての聞いたことある。
もしかしたら全然違うかもしれんがそういうときはきっと誰か激しく突っ込んでくれるはず。
268:login:Penguin
09/08/12 00:10:31 u9/Em9/R
>>267
ぜんぜん違う話。
269:login:Penguin
09/08/12 05:02:52 0UM4nevW
$ cat<<<h$(cat<<<e$(cat<<<l$(cat<<<l)o)\!)
270:login:Penguin
09/08/12 14:49:33 /9MBM8gW
特定文字列が含まれてるかどうかの判断って出来ますか?
sedとかで文字の置き換えとか入れ替えが出来る程度のレベルです。
dg=`route | grep '192.168.24.1'`
でdgの中にug含まれているかどうかを確認したいと思ってます。
271:login:Penguin
09/08/12 14:51:54 u9/Em9/R
>>270
route | grep '192.168.24.1' | grep ug
ってこと?
272:login:Penguin
09/08/12 14:59:52 LZ159q8G
>>270
case "${dg}" in
*ug*)
# match
;;
*)
# not match
;;
esac
273:270
09/08/12 15:13:57 /9MBM8gW
>>271
そうでした。パイプでさらにgrepすればよかったですね。
こちらの方法でも出来ました。
ありがとうございます。
>>272
判定までしていただいて助かります。
こちらの方法で出来ました。
ありがとうございます。
まだまだよくわかってないですがここで質問しなくてもすむように勉強したいと思います。
274:login:Penguin
09/08/12 18:46:07 jKHDnL7q
シェルスクリプトでサーバーのチェックをしてます。
それ自体はcronで定期的に行ってますが、これと併せて定期的にデータを送信出
来ればと考えてます。
実際にはチェックして引っかかったサーバーにzipを送り、サーバーは時間が来
れば勝手に実行するという感じですが、シェルスクリプトでzipデータを別サー
バーに送るとかいうことが可能でしょうか。
可能ならどんな関数を使えばよいかアドバイスもらえないでしょうか。
初歩的な質問かと思いますが宜しくお願いいたします。
275:login:Penguin
09/08/12 18:54:50 8iPFdi1w
金玉 → >>274
。゜( ゜^∀^゜)゜。アーッハハハハノヽノヽノヽノ\ / \
276:login:Penguin
09/08/12 21:03:12 0s7n/+F7
>>274
sshの鍵交換してパスワードを聞かれないようにしておいて
scpなりrsyncなりで送れば良いと思う。
277:login:Penguin
09/08/12 23:35:06 tCsvaW+m
>>239
これはどう?
#/bin/bash
FILE=$1
OFILE=/dev/shm/hoge
xargs < $FILE -n10 | tr " " "\t" > $OFILE
278:login:Penguin
09/08/12 23:40:23 tCsvaW+m
>>277 じこれす
まちがった
xargs < $FILE -n10 | tr ' ' \\t > $OFILE
です。
279:login:Penguin
09/08/12 23:56:35 0UM4nevW
すげー
280:login:Penguin
09/08/14 09:45:57 vesWTwzQ
変数COUNTER の値が10より小さければ
MMF0009 と表示
100より小さければ
MMF0099 と表示
1000より小さければ
MMF0999 と表示
1000ならば
MMF1000 と表示
というスクリプトをcase 文を用いてすっきり書きたくて下記の通り書きましたが、
算術式及び、case の構文の違いでしょうか間違っています、ご教示願えないでしょうか。
#!/bin/bash
COUNTER=0
DIGIT3=000
DIGIT2=00
DIGIT1=0
while [ ${COUNTER} -lt 999 ]
do
case "$COUNTR" in
`expr ${COUNTER}` -lt 10) echo "MMF$DIGIT3$COUNTER";;
`expr ${COUNTER}` -lt 100) echo "MMF$DIGIT2$COUNTER";;
`expr ${COUNTER}` -lt 1000) echo "MMF$DIGIT1$COUNTER";;
`expr ${COUNTER}` = 1000) echo "MMF$COUNTER";;
esac
COUNTER=`expr ${COUNTER} + 1`
done
281:login:Penguin
09/08/14 09:56:51 HEs3iRVc
>>280
manpageより
case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
A case command first expands word, and tries to match it against each pattern in turn,
using the same matching rules as for pathname expansion (see Pathname Expansion below).
282:login:Penguin
09/08/14 10:03:19 GRUhI9LP
こういうこと?
seq -f 'MMF%04.f' 0 1000
283:login:Penguin
09/08/14 15:19:52 VHMVUNf7
>>280
すっきり書いてみた。
#! /bin/sh
COUNTER="$1"
DIGIT1=000
DIGIT2=00
DIGIT3=0
DIGIT4=
eval 'echo "MMF${DIGIT'"${#COUNTER}"'}${COUNTER}"'
284:283
09/08/14 15:31:27 VHMVUNf7
printfがあれば更にすっきり。
#! /bin/sh
COUNTER="$1"
printf 'MMF%04d\n' "${COUNTER}"
285:login:Penguin
09/08/14 23:08:31 vesWTwzQ
>>280 です
皆さんどうもありがとうございます。
C のswitch〜case構文のようなものかと勘違いし、case の使い方が全然間違ってましたし他にも細かなミスがありましたが、調べてこんな感じで期待通りの振る舞いができました
case $COUNTR in
?)
echo "MMF$DIGIT3$COUNTER"
??)
echo "MMF$DIGIT2$COUNTER"
??)
echo "MMF$DIGIT1$COUNTER"
1000)
echo "MMF$COUNTER"
esac
それから、seq とかeval の使い方も調べて見ます、どうもありがとう。
286:login:Penguin
09/08/14 23:17:06 vesWTwzQ
>>285です
もう一つお願いします。
シェルスクリプト というのは、そのような仕組みになってるんでしょうか?
単純にインタプリタ型の言語なのでしょうか、自分としてはそうではない気がします
なぜなら、sudo コマンドを使う場合、シェルスクリプトの場合、スイッチ を付加して実行しますが
それは直接、カーネルに対してオペレーションしているような気がするのですが?詳しい方が居られましたら教えてください。
287:login:Penguin
09/08/14 23:19:32 vesWTwzQ
×シェルスクリプト というのは、そのような仕組みになってるんでしょうか?
○シェルスクリプト というのは、どのような仕組みになってるんでしょうか?
288:login:Penguin
09/08/14 23:40:04 4UQz02FW
>>286
>それは直接、カーネルに対してオペレーションしているような気がするのですが?
気のせいです。
手始めにforkとかexecvとか調べたらいいんじゃね?
289:login:Penguin
09/08/14 23:56:56 cgRLII5a
インタプリタだよ。
sudoは、シェルとは別のプログラムです。
シェルスクリプト中で、シェルのビルトイン関数やらで無いコマンドを書くと、
シェルは、その名前のプログラムを探してそれを実行しようとします。
上に出てきた中で言うと、
while case echo evalはシェルのビルトイン関数(?)で
seq printf sudoは外部プログラムです。
「カーネルに対してオペレーションしている」云々は、
言っている意味が良く分かりません。
全ての意味のあるプログラムは、直接的にしろ間接的にしろ、
カーネルと相互作用するはずですから。
290:login:Penguin
09/08/15 01:56:48 niIslDjl
while, case と echo, eval はくくりが別だけどな。
type while とか type echo とかやってみ。
291:login:Penguin
09/08/15 19:58:45 4JYHgxvW
>>286 です
皆さんThxです。
292:login:Penguin
09/08/15 23:51:22 O3QLwBfx
read packetcount
read port
tcpdump -n -c$packetcount -s1500 -vvv -X port $port
こんな感じでパケット見てるんですが、1パケットごとに色を変えることは出来ますか?
文字色の指定方法はわかるんですが、そういった指定方法や手法があればおしえてもらえないでしょうか。
なければおとなしくあきらめます。
293:login:Penguin
09/08/16 02:00:07 kxH41sn/
>>292
色は無理。
portが読み込まれていない。
294:login:Penguin
09/08/16 02:32:16 m+r83sIL
>>292
C1="$(tput setaf 0)"
C2="$(tput setaf 1)"
tcpdump -n -c 10 -s 1500 -vvv -X | while IFS="" read l;do
if [ "$l" = "${l#$'\t'}" ]; then
echo -n "$C1"
A="$C2";C2="$C1";C1="$A"
fi
echo "$l"
done
こんな感じ?
>>293の言っている意味がわからないので外してるかも…。
295:login:Penguin
09/08/17 09:43:35 WnQqR0f7
#!/bin/bash
echo -e "|""`top -i -n1 | grep '^Cpu(s)'`""|";
ちょっとおおざっぱですが上記の方法でtopの内容を抜き取ってます。
Windows付属のハイパーターミナルで見ると普通に表示されるのですが、他のターミナルソフトで(tera termとか)で見ると
Cpu(s): 1.2%us, 1.2%sy, 0.0%ni, 96.3%id, 1.1%wa,erial8250: too much work for irq4
0m 0.1%hi, 0.2%si, 0.0%st|
こんな感じで途中にerial8250〜と表示されます。
これを検索してもそれらしいものも出てこず、何が原因かわからないでいます。
原因をご存じの方いましたらヒントかアドバイスもらえると助かります。
296:login:Penguin
09/08/17 11:19:54 Pf83pCV6
>>295
コピペ間違ってないかな?
「serial8250: too much work for irq4」なら
次のページが引っかかった。
URLリンク(eve-japan.co.jp)
ターミナルソフトによって異なるのは$TERM の問題なのかな?
表示自体は 単に stderr へのメッセージが表示されてるのか
とおもうけど。「2>/dev/null」とかつけたら 変わるのかな
297:295
09/08/17 11:55:51 WnQqR0f7
>>296
文字コードとかの問題でsが抜けてるっぽいです。
ログを見たら同じ記述があったのでメッセージが画面に出てるっぽいですね。
方法としては破棄する(やり方調べないといけないけど)かserial8250: too much work for irq4をsedとかで
消し去るくらいでしょうか。
スマートではないですがとりあえず消し去る方向で行ってみます。
ありがとうございます。
298:login:Penguin
09/08/17 12:12:38 cm75eODq
シリアルコンソールだよね?
カーネルがprintkで出してるからsedとかじゃムリだと思う。
消したいなら/proc/sys/kernel/printkをいじるとか。
299:297
09/08/17 12:52:29 WnQqR0f7
>>298
ありがとうございます。
調べて6417を5417に替えようとしたら"printk" E667: Fsync failedとか出てきて
書き換えさせてくれませんでした。
解決方法はまだわかってませんがなかなかハードルが高そうです。
300:297
09/08/17 13:10:38 WnQqR0f7
補足です。
echo -e "|""`top -i -n1 | grep '^Cpu(s)'`""|";
の部分を消したら表示されなくなりました。
topした時だけ出てるみたいです。理由はわかりませんが。
top内容を >> top.datとかに書き出してそこから引っ張ってくれば
表示されないようになるかもしれません。
根本的な解決にはなってませんが・・・。
301:300
09/08/17 17:13:08 WnQqR0f7
さすがにスレ違かと思いますが、/proc/sys/kernel/printkというのはviでの編集は不可ですか?
ググってはいるんですが編集が出来ずに困っております。
もしかしたら凄い見当違いな事を行っているのかもしれませんが解決のヒントもらえると助かります。
302:login:Penguin
09/08/17 17:20:05 R0skv6Jz
>>301
さすがにスレ違い。
303:300
09/08/17 17:30:37 WnQqR0f7
>>302
すいません。
くだ質に行ってみます。
304:login:Penguin
09/08/18 06:39:39 elYCry/8
>>301
echoするもんでしょ。JK。
305:login:Penguin
09/08/18 08:01:40 8XgVhYMF
そうか?
sysctl -w kernel/printk=foobar
306:login:Penguin
09/08/18 09:35:31 BInCpQzK
もうくだ質に移動したよ。
307:login:Penguin
09/08/18 18:39:48 S4j+NJGU
moge.dat
testjama na moji
sakujo="jama na moji"
okikae=""
echo `more /tmp/moge.dat | grep '^test' | sed -i s/$sakujo/$okikae/g`
これでmoge.datの中からtestだけ表示出来るのではないかと思っていたのですが
sed: -e 表現 #1, 文字数 13: 「s」コマンドが終了していません
というエラーが表示されます。オプションで-eも使用していませんし構文的には大丈夫そうに思えたのですが
間違いがあればご指摘いただけないでしょうか。
308:login:Penguin
09/08/18 19:03:56 9vBuj+t/
sed 's/jama na moji//g' moge.dat
じゃいかんのか?
なぜechoしたりmoreしたりgrepしたりするのか意味わからん
309:login:Penguin
09/08/18 19:12:00 I/MV7qz2
sed の -i はなぜつけているんだい?
310:307
09/08/18 19:31:44 S4j+NJGU
>>308
単純にmoreで見た中身をgrepしてそこからさらに削ればいいのかなと思い
検索をしてパイプでつなげただけの状態です。
また説明が足りませんでしたがmoge.datは複数行あってtestから始まる行が
いくつかあったことから素人考えでこのようになりました。
>>309
すいません。
別の場所のsedをコピーしたときについたみたいです。
この場合は必要ないですね。
311:login:Penguin
09/08/18 19:37:15 9vBuj+t/
sed '/^test/s|jama na moji||g' moge.dat
312:login:Penguin
09/08/18 19:43:42 0jjNf9FI
>>307の直接の答えを言うと、
sed -i s/$sakujo/$okikae/g
↓
sed -i s/jama na moji//g
↓
sed -i 's/jama' 'na' 'moji//g'
と引数4つに解釈されるから。
313:login:Penguin
09/08/18 22:00:14 elYCry/8
>>306
マルチって死ねばいいと思う
314:login:Penguin
09/08/18 22:23:21 Df7zfcy/
スレ違いを指摘されて移動してるんだから、マルチとは言わないだろ
315:login:Penguin
09/08/19 11:19:58 zpPUbNQu
ログをとりたくてmessagesに内容を出すようにしたいのですが
echo "logtest" >> /var/log/messages
としても書き出されません。
このファイルとユーザー自体はrootではないので権限が問題かと思ってます。
このexampleユーザーはwheelに入れており、sudoで%wheel ALL=(ALL) ALLと念のため指定しましたがダメでした。
これは構文自体が間違っているということでしょうか。
316:login:Penguin
09/08/19 11:38:22 GJ3CGMhT
>>315
sudo echo "logtest" >> /var/log/messages
とかやったの?
これだと >> 以下は sudo の外にあるから効かない。
sudo sh -c 'echo "logtest" >> /var/log/messages'
とかやればいい。
つーか logger で書いたら。
317:login:Penguin
09/08/19 15:03:44 9fjqV7Pu
コマンドの実行結果を>>で適当なテキストに出力して見てみると
[H [J [0;10mtop - 20:06:35 up 51 min, 3 users, load average: 0.00, 0.00, 0.00 [0;10m [39;49m [K
いろんなコマンドでこんな感じになってるんですがこれは何なのでしょうか?
これはtop内容ですがなぜこうなるのかがわかりません。
表示されている文字だけをテキストに出したいのですがどうすればいいでしょう
か。
318:315
09/08/19 15:07:02 zpPUbNQu
>>316
素早いレスありがとうございます。
1個の命令として見られていなかったわけですね。
loggerでかけるところはそうしたいのですが、他にもいくつかファイルがあって
そちらでも追記したいと思っておりました。
まだ試してませんがこれでいってみたいと思います。
319:login:Penguin
09/08/19 15:08:58 yGi4QWIv
topの人はtopの何を切り出したいのだ?
ロードアベレージ?
320:login:Penguin
09/08/19 15:09:49 GJ3CGMhT
>>317
top なら -b で。
>>261 でも書いたはずだが。
321:login:Penguin
09/08/19 15:16:10 GJ3CGMhT
>>317
ファイルへの出力は
基本的にはただの文字を順に追記していくだけ。
画面への出力は文字を反転させたり色を変えたり
いったん書いたものを戻って書き直したりする。
画面用の出力をそのままファイルに出すとおかしなことになる。
322:login:Penguin
09/08/19 21:31:13 rKA7cUBO
echo "logtest" | sudo tee -a /var/log/messages
teeってマイナー?
323:login:Penguin
09/08/19 22:00:23 ZZH7H5sc
いやんバカんな事やってないで、きちんとloggerを使いなさい。
324:login:Penguin
09/08/19 22:31:33 S8kRS54+
シェルにloggerなんてあるの?
325:login:Penguin
09/08/19 23:54:53 Gto2VsIQ
------------------------- 今からこのスレは外部コマンド禁止になりました -------------------------
326:login:Penguin
09/08/20 00:22:53 z7LXRLpP
シェルの組み込みコマンドだけでやれってか?
厳しいな。。
327:login:Penguin
09/08/20 10:46:36 D2EfC5ES
>>324
それ言ったら sudo だってないじゃん。
328:login:Penguin
09/08/20 11:47:57 tKteNA5S
今、ネットワークカードを通過するトラフィック量をRRDToolを使用してグラフにしたくて
1秒あたりの送信・受信をバイトで求めるスクリプトを書いたつもりなのですが、
これでちゃんと値が求められているのか、自分ではよく分からないのです。
それっぽい感じの値は出てきてるんですが・・。
そこでなのですが「ここが違う」「そもそもそれじゃダメ」などということがありましたら、
教えていただきたく、ここに書き込まさせていただきました。
もし、お時間がありましたら添削していただけると嬉しいです・・・。
func_ethernet()
{
UserName="UserName"
AuthPass="AuthPassWd"
PrivPass="PrivPassWd"
HostName="localhost"
if [ $1 = "send" ]; then
LogName="/tmp/log-send"
LogOld=`cat ${LogName} | sed -n 2p`
LogOldTime=`cat ${LogName} | sed -n 1p`
date +"%Y-%m-%d %k:%M:%S" > ${LogName}
/usr/bin/snmpget -a MD5 -A ${AuthPass} -l authPriv -u ${UserName} -x AES -X ${PrivPass} -v 3 ${HostName} .1.3.6.1.2.1.2.2.1.16.2 | awk '{print $NF;}' >> ${LogName}
LogNew=`cat ${LogName} | sed -n 2p`
LogNewTime=`cat ${LogName} | sed -n 1p`
echo | awk '{print ( (newValue - oldValue) / (newTime - oldTime) );}' newValue=${LogNew} oldValue=${LogOld} newTime=`date -d "${LogNewTime}" +"%s"` oldTime=`date -d "${LogOldTime}" +"%s"`
elif [ $1 = "recive" ]; then
略
fi
}
rrdtool update ${RRD_PATH}/ethernet.rrd N:`func_ethernet send`:`func_ethernet recive`
329:login:Penguin
09/08/20 12:00:54 3vJ7EKjF
文字色と背景色ついて質問です。
わかりやすく色をつけてみたのですがこの場合は文字の部分のみが緑文字と黒背景となります。
#!/bin/bash
echo -en "\033[32;40m";
select i in "123" "456"; do
[ -n "$i" ] && break
done
case "$i" in
123) func123;;
456) func456;;
esac
文字ではない部分も黒背景とする事は可能ですか?
330:login:Penguin
09/08/20 19:05:04 KNtykgpF
まずエスケープシーケンスを直接指定するのはよくない
端末によってサポートされている機能に違いもあるし
「文字ではない部分」の意味も不明
行単位ということなら
#!/bin/sh
tput setab 0
tput setaf 2
tput el
echo "Hello"
331:login:Penguin
09/08/21 00:19:49 F/0U9rwq
文字ではない部分ってのはその通りだろう。
文字の背景の色を指定は出来るが、文字以外のところの背景色はどうすってことじゃね?
\033[32;40mはせめて
ESC=\033[
midori=${ESC}32
とかにしたほうがいいと思う。もっといい方法あればえらい人が教えてくれるはず。
332:login:Penguin
09/08/21 00:26:48 korZcQ4D
>>331
tput使えよ。
333:login:Penguin
09/08/21 00:34:42 G/rWMdtH
すみませんが組み込みコマンドだけでお願いします
334:login:Penguin
09/08/21 00:41:38 korZcQ4D
>>333
busyboxにshとtputが入ってる場合はOK?
335:login:Penguin
09/08/21 00:53:50 hq/n18x3
>>331
> 文字の背景の色を指定は出来るが、文字以外のところの背景色はどうすってことじゃね?
だから, 画面全体をそうしたければclearすればいいんじゃね
文字を書き込んでいない*どの部分を*背景色にしたいんだ, って話
336:331
09/08/21 07:39:21 F/0U9rwq
tputなんてあるわけね。
シェルに標準でそういうのあるの知らなかったよ。
>>335
文字がかかれてない場所全部じゃね?
ようは画面全体の背景色を指定したいってことだと思うけど。
文字と文字の背景色は\033[32;40mで指定できるけど
それ以外の全体の背景色という意味だと思う。
337:login:Penguin
09/08/21 07:45:26 korZcQ4D
>>336
とある端末だとそうですね。
338:login:Penguin
09/08/21 11:30:52 90eN5uxA
そういうの意識するほどたくさんの機器がないからだとおもうけど
俺はVT100でだいたい表示されてればOKかな〜とか勝手に思ってる。
ネットワーク機器だとやっぱりまだANSIとかが標準になってたりするのかな?
さすがに最近のネットワーク機器でVT52が標準とかってことはないと信じたいけど。
339:login:Penguin
09/08/21 17:12:14 hq/n18x3
>>336
> ようは画面全体の背景色を指定したいってことだと思うけど。
>>335
行単位なら >>330
カーソル位置からscreenの最後までならelの代わりにed使えばいい
340:login:Penguin
09/08/21 23:42:11 korZcQ4D
所謂、ブルースクリーンを作りたい。
341:login:Penguin
09/08/22 19:41:23 iygx6FPk
# word.lst
あいうえお aiueo
かきくけこ kakikukeko
さしすせそ sasisuseso
#target.txt
なにぬねの
あいうえおキター
たちつてと
さしすせそ
キターかきくけこ
word.lst の区切文字はTAB 、またはSPACE とします
target.txt を一行ずつ読込み、word.lst のキーとなる単語があれば、
置換しdest.txt に出力するシェルスクリプトの書き方を教えて頂けないでしょうか。
#dest.txt
なにぬねの
aiueoキター
たちつてと
sasisuseso
キターkakikukeko
342:login:Penguin
09/08/22 19:49:19 +xcsiCNS
まず服を脱ぎます
343:341
09/08/22 20:44:33 iygx6FPk
while read line
do
処理(TARGET=あいうえお、DEST=aiueo)
done < word.lst
例えばこのように、line で読込んだ
あいうえお aiueo
を変数TARGET、 DEST に格納する方法を教えてもらえませんでしょうか。
344:login:Penguin
09/08/22 21:14:08 +xcsiCNS
set $line
TARGET=$1 DEST=$2
345:login:Penguin
09/08/22 21:44:23 beHpftLf
すぐ書ける簡単なやり方で
#!/bin/sh
while read from to
do
echo "s|$from|$to|g"
done <word.lst >program
sed -f program <target.txt >dest.txt
346:login:Penguin
09/08/22 23:46:26 m2+LmGIC
>>345さん、お世話になります
掲示していただいたスクリプトでの置換ですが、>>341 で掲示したファイルの置換は期待通りの結果になるのですが
下記のような内容のファイルだと全く置換できません、なぜなのでしょうか?
#target.txt
CREATE TABLE `利用明細` (
`伝票番号` INTEGER AUTO_INCREMENT DEFAULT NULL ,
`商品ID` INTEGER DEFAULT NULL ,
`数量` INTEGER DEFAULT NULL ,
PRIMARY KEY (`伝票番号`)
);
#word.lst
伝票番号 DENNPYOUBANGOU
数量 SUURYOU
347:login:Penguin
09/08/23 00:31:10 aCd7CupH
>>346 です
解決しました、文字コードを錯誤してました(^^;
348:login:Penguin
09/08/26 02:39:26 5uGOu/R4
1000文字ごとに改行を入れる簡単な方法を教えてもらえませんか
349:login:Penguin
09/08/26 04:35:48 aiWYMJf6
これ、俺は思いつかない、ラテン文字だけなのか、マルチバイト文字も混在してるのか
こういうのは、やっぱ、perlやrubyが得意だ
350:login:Penguin
09/08/26 04:41:51 r5TfqoXR
nkf -f 1000
351:login:Penguin
09/08/26 14:07:13 ehP4IQnp
abcdefgabcdefgabc ...
と続く文字列にn文字ごとに「,」を入れてcsvにするにはどうしたらいいですか?
352:login:Penguin
09/08/26 14:24:34 LXSFF2c5
echo abcdefghijklmnabcdefghijklmnh | sed 's/\(.\{5\}\)/\1,/g'
353:login:Penguin
09/08/26 14:28:23 z6vBIwzM
echo 'abcdefgabcdefgabc' | sed 's/\(.\{変数n\}\)/\1,/g'
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5367日前に更新/221 KB
担当:undef