AAS
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
「そういうのはperl使いましょう」と回答するのはやめましょう。
安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その23
peace.2ch.net
2014/11/11(火)00:54:03.43.net
2名無しさん@お腹いっぱい。 [sage]
2014/11/11(火)01:00:47.57.net
3テンプレ ◆01VkPKFOHeoR [sage]
次スレ立ったか...
一応前スレでテンプレ書いた手前、書き込んでおきます
2014/11/11(火)03:40:09.81.net
4テンプレ ◆01VkPKFOHeoR [sage]
初心者、学生、アマチュア、プロ、シェルの種類や OS を問いません。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずはテンプレートをご覧下さい。
□A. お約束
1. 特記なき場合は #!/bin/sh がデフォルトです。この場合可搬性に注意し、
Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。
bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。
良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。
2. 質問する前に、まず自分で調べましょう。ただし、
「聞くは一時の恥、聞かぬは一生の恥」です。積極的に参加しましょう。
3. 相手を侮辱する発言、失礼な発言は差し控え、知的な議論を楽しみましょう。
4. 他者には様々な環境や事情、目的が有る事に留意し、無下に扱う様な発言は
控えましょう。
□B. お約束の補足
1. Mac OS X では、/bin/sh の実体は bash です。また、一般的に BSD 系 や
GNU/Linux の方は、/bin/sh がシンボリックリンクですので、注意して下さい。
ls -l /bin/sh や readlink -e /bin/sh で確かめて下さい。
2. 可搬性については、下記 F.1 を参照して下さい。
3. POSIX については、man 7 standards や下記 F.2 ( の特に Shell & Utilities )
を参照して下さい。
4. Traditional Bourne Shell とは、UNIX Version 7 から SVR4.2 の /bin/sh を元に
小さなの改変を加え主に商用 UNIX で残されているものです。( 下記 F.3 参照 )
5. Traditional Bourne Shell で入手しやすい sh は、後期 SVR4.0 から派生し、
SunOS 5 / OpenSolaris を経た、Heirloom Bourne Shell です。
SVR4 / SVID3 相当です。同様の Unix utilities も扱っています。
( 下記 F.3 参照 )
2014/11/11(火)03:41:35.86.net
5テンプレ ◆01VkPKFOHeoR [sage]
1. シェルスクリプトのことをシェルってゆーな
2. 知らないコマンドが出てきたら man コマンドで調べましょう。
3. UNIX には、シェルスクリプトに便利な小さなコマンドが色々あります。
apropos ないしは man -k でそれらしい単語による簡単な検索もできます。
4. シェルの構文や内部コマンドは man sh で。英語は LANG=C man shで。
5. 思い通りに動かないときは、まずは #!/bin/sh -x でトレースしましょう。
6. 適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awk / perl / javascript / ruby / python 等、他の (スクリプト) 言語の方が
適した処理にはそちらを使いましょう。
7. シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題は正規表現スレへ
8. csh / tcsh のシェルスクリプトは推奨されません。理由は下記を参照
http://www.speech-lab.org/~hiroki/csh-whynot.euc
9. cat file|すんなハゲ
a. 詳細は "Useless Use of Cat" UUOC で検索して下さい
b. 有用な場合も有ります Useful use of cat(1) 英文
http://www.in-ulm.de/~mascheck/various/uuoc/
□D. シェルスクリプトでよく使うコマンド
1. 制御・条件判定系: [, test, expr, true, false, yes, getopts
2. テキスト処理系: cat, awk, sed, tr, sort, uniq, grep, wc, head, tail, cut,
paste, comm, join
3. ファイル検索系: find ( スペースなどを含むファイル名を正しく処理するため、
find は -exec command {} + を推奨。
他に -print0、xargs は -0 オプションという方法もあるが Solaris 非対応 )
4. ディレクトリ系: basename, dirname
5. 出力系: echo, printf
6. 対話コマンド制御系: expect
7. http / ftp の処理自動化: wget, curl
2014/11/11(火)03:42:31.91.net
6テンプレ ◆01VkPKFOHeoR [sage]
1. Bourne Shell自習テキスト ( 1993年 ) pdf お薦め
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/
http://ayapin.film.s.dendai.ac.jp/~matuda/Lecture/PDF/sh-two.pdf
2. シェルを使おう - 導入からプログラミングまで - ( 2002年 )
http://www.netfort.gr.jp/~tomokuni/lms/shell/
3. UNIX FAQ LIST
http://www.nurs.or.jp/~asada/FAQ/UNIX/UNIX.FAQ.html
□F. 参考リンク
1. 可搬性関連
a. autoconf マニュアル 移植性のあるシェルプログラム
http://www.gnu.org/software/autoconf/manual/autoconf.html#Portable-Shell
http://www.geocities.jp/fut_nis/html/autoconf-ja/Portable-Shell.html
b. Portability talk [Bash Hackers Wiki] 英文
Obsolete and deprecated syntax も見る価値有り
http://wiki.bash-hackers.org/scripting/nonportable
c. How to make bash scripts work in dash 英文
http://mywiki.wooledge.org/Bashism
d. DashAsBinSh 英文
https://wiki.ubuntu.com/DashAsBinSh
e. Portable Shell Programming 英文
http://www.in-ulm.de/~mascheck/various/portability/
2014/11/11(火)03:43:24.34.net
7テンプレ ◆01VkPKFOHeoR [sage]
The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition 英文
http://pubs.opengroup.org/onlinepubs/9699919799/
3. Traditional Bourne Shell 関連
a. The Traditional Bourne Shell Family History and Development 英文
http://www.in-ulm.de/~mascheck/bourne/
b. BourneShell / Where does the Bourne shell live? 英文
http://mywiki.wooledge.org/BourneShell
c. The Heirloom Bourne Shell 英文
http://heirloom.sourceforge.net/
4. マニュアル
a. The Base Specifications Issue 7, 2013 Edition 英文
http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
b. FreeBSD 日本語マニュアル検索
http://www.jp.freebsd.org/man-jp/search.html
c. JM Project (Japanese)
http://linuxjm.sourceforge.jp/
5. FAQ 等
a. UNIXの部屋 ( 2011年 )
http://x68000.q-e-d.net/~68user/unix/
b. Linux JF (Japanese FAQ) Project
http://linuxjf.sourceforge.jp/
c. Advanced Bash-Scripting Guide 英文
http://www.tldp.org/LDP/abs/html/
d. Unix Programming FAQ 日本語訳 ( 2000年 )
http://www.race.u-tokyo.ac.jp/~moro/unix-programmer/
2014/11/11(火)03:44:12.46.net
8名無しさん@お腹いっぱい。 [sage]
a. web tool です。Vim syntastic や Emacs の Flycheck でも使えます
ShellCheck
http://www.shellcheck.net/about.html
b. vim 用 syntastic
https://github.com/scrooloose/syntastic
c. checkbashisms も使用してチェック duggan/shlint GitHub
https://github.com/duggan/shlint
□G. 前スレ
1. ☆シェルスクリプトを勉強するにあたって☆
hibari.2ch.net
2014/11/11(火)03:45:49.28.net
9テンプレ ◆01VkPKFOHeoR [sage]
2014/11/11(火)03:46:48.40.net
10テンプレ ◆01VkPKFOHeoR [sage]
1. 検索しやすい様に、先頭に "コメント複数行\n指示\n□X" を付けて指定して下さい。
追加や、削除、挿入、移動、分割等と適切に書いて下さい。
900 レスまでに別の方の反論が無ければ、次にスレッドを立てる人が適当に判断して
取り込むはずです。
2. レス例
スクリプトスレを列挙するのは不要に感じる
削除
□H. 関連スレ
H.5から8 ECMAScript, Rubyについて, Pythonのお勉強, サーバサイドjavascript
3. レス例
これは、聖なる本
追加
□E. 学習用テキスト
4.お勧め図書
a 伝承シェルプログラミング ( 199X年 )
http://www.example.net/404.html
| テンプレートの変更案や、お勧めのリンク、本等が有りましたら、
V あ、張り切って〜、どうぞ〜! 案じゃ無くてつぶやきでも、どうぞ〜!
2014/11/11(火)03:47:27.08.net
11名無しさん@お腹いっぱい。
2014/11/12(水)04:59:38.71.net
12名無しさん@お腹いっぱい。 [sage]
2014/11/12(水)07:18:57.54.net
13名無しさん@お腹いっぱい。 [sage]
コート脱いだらハワイのミポリソ萌えスクリプトが
サーバのどっかに転がってたかもなぁw
2014/11/12(水)13:25:09.66.net
14名無しさん@お腹いっぱい。 [sage]
とか思ってたらしっかり記載していたでござる
なんか文面の雰囲気変わったな、もっと堅い感じだった気がするが
2014/11/12(水)23:08:52.17.net
15名無しさん@お腹いっぱい。 [sage]
変えてないけどなあ
意見聞く際になるべく中立、丁寧語で書いたから、そういう印象なのかな?
意見を聞いて了承を得てからという作業は面倒臭かったが
たとえ、その23 以前の短い1レスだけのテンプレのままを、立てる人がコピペするにしても
少なくとも Perl の矛盾した記述だけはなんとかしたい
シェルスクリプト総合 その1 からずっと最近までは
「(Rubyや)awkまたはperlの方が適した処理にはそちらを使いましょう。」だけだった
2014/11/13(木)07:09:24.77.net
16名無しさん@お腹いっぱい。 [sage]
ずっと(22年ぐらい) 自宅や学校の FreeBSD上で tcsh を login shell として使ってきましたが、
このスレを読んで、 csh 系スクリプトはお勧めでないことを知りました。
root で作業するときには、 sh も必要なので使いますし、スクリプトも書くのですが
tcsh から sh系に移行できないでいます。
最近は仕事で数値計算をするときのプラットフォームが cygwin になってしまったため、
これを機に 自宅の FreeBSD でも、sh 系を login shell にするように切り替えようかとも思っています。
お勧めを教えて頂けませんでしょうか。
どうぞ宜しくお願い致します。
2014/11/16(日)22:28:48.41.net
17名無しさん@お腹いっぱい。 [sage]
すみません。他に適切と思われるスレを見つけたので、移動します。
おまえら! shell は何を使っているんですか?
peace.2ch.net
お邪魔して申し訳ありませんでした。
2014/11/16(日)22:34:23.69.net
18名無しさん@お腹いっぱい。 [sage]
2014/11/17(月)00:19:12.19.net
19名無しさん@お腹いっぱい。 [sage]
2014/11/17(月)06:46:29.31.net
20名無しさん@お腹いっぱい。 [sage]
2014/11/17(月)08:15:15.50.net
21名無しさん@お腹いっぱい。 [sage]
2014/11/17(月)08:20:16.99.net
22名無しさん@お腹いっぱい。 [sage]
2014/11/17(月)08:52:41.49.net
23名無しさん@お腹いっぱい。 [sage]
2014/11/17(月)14:56:35.93.net
24名無しさん@お腹いっぱい。 [sage]
2014/11/17(月)22:07:53.32.net
25名無しさん@お腹いっぱい。 [sage]
いやなんとなく続けてるだけか
2014/11/18(火)13:45:16.57.net
26名無しさん@お腹いっぱい。 [sage]
実体が ash だったり
dash へのリンクだったりするだけでw
2014/11/18(火)17:45:34.74.net
27名無しさん@お腹いっぱい。 [sage]
スクリプト書く労力は他のシェルでもあんま変わらんでしょ?
2014/11/18(火)17:50:06.98.net
28名無しさん@お腹いっぱい。 [sage]
補完なし、ヒストリーなし、aliasなしで。
2014/11/18(火)18:04:52.35.net
29名無しさん@お腹いっぱい。 [sage]
2014/11/18(火)18:09:15.90.net
30名無しさん@お腹いっぱい。 [sage]
2014/11/18(火)18:24:14.49.net
31名無しさん@お腹いっぱい。 [sage]
2014/11/19(水)20:36:46.43.net
32名無しさん@お腹いっぱい。 [sage]
2014/11/20(木)21:39:29.05.net
33名無しさん@お腹いっぱい。 [sage]
それはFreeBSD拡張のashだね。
2014/11/21(金)05:09:42.89.net
34名無しさん@お腹いっぱい。 [sage]
ログインシェルは zsh
2014/11/21(金)16:11:47.88.net
35名無しさん@お腹いっぱい。 [sage]
2014/11/21(金)16:14:13.45.net
36名無しさん@お腹いっぱい。 [sage]
2014/11/21(金)19:51:04.45.net
37名無しさん@お腹いっぱい。 [sage]
その状態でログインしたviからシェルエスケープしようとすると
vi変数でshell=vi状態になってるのでシェルのつもりでさらにviが起動されてハマる。
2014/11/21(金)19:58:39.53.net
38名無しさん@お腹いっぱい。 [sage]
2014/11/21(金)20:28:57.59.net
39名無しさん@お腹いっぱい。 [sage]
2014/11/21(金)20:41:52.18.net
40名無しさん@お腹いっぱい。 [sage]
2014/11/21(金)20:53:09.31.net
41名無しさん@お腹いっぱい。 [sage]
下記の例だと「1 2 3」の順で表示されますが、これを「3 2 1」の順で表示させたいです。
VLIST="1 2 3"
for val in $VLIST
do
echo $val
done
2014/11/25(火)12:45:00.26.net
42名無しさん@お腹いっぱい。 [sage]
2014/11/25(火)13:00:52.50.net
4341 [sage]
2014/11/25(火)13:39:35.78.net
44名無しさん@お腹いっぱい。 [sage]
$ for val in $(rev <<< "$VLIST"); do echo $val; done
2014/11/25(火)13:46:29.21.net
45名無しさん@お腹いっぱい。 [sage]
2014/11/25(火)13:56:09.14.net
46名無しさん@お腹いっぱい。 [sage]
2014/11/25(火)13:57:16.68.net
47名無しさん@お腹いっぱい。 [sage]
2014/11/25(火)20:47:40.16.net
48名無しさん@お腹いっぱい。 [sage]
GNU 方面は、他にも便利なコマンドがいろいろありそう・・・
(さすがに date コマンドで日付演算できるのは知ってた)
2014/11/25(火)21:00:07.87.net
49名無しさん@お腹いっぱい。 [sage]
100個ぐらいしかないんだからさ
2014/11/25(火)21:25:54.46.net
50名無しさん@お腹いっぱい。 [sage]
http://www.catonmat.net/blog/gnu-coreutils-cheat-sheet/
2014/11/25(火)21:53:35.67.net
51名無しさん@お腹いっぱい。 [sage]
しかし名前のセンスいいよな
2014/11/26(水)00:18:13.73.net
52名無しさん@お腹いっぱい。 [sage]
2014/11/26(水)00:36:12.96.net
53名無しさん@お腹いっぱい。 [sage]
要素ごとにもっかいrevで
2014/11/26(水)06:02:33.63.net
54名無しさん@お腹いっぱい。 [sage]
やめておけよw
2014/11/26(水)06:28:19.23.net
55名無しさん@お腹いっぱい。 [sage]
2014/11/26(水)06:42:34.79.net
56名無しさん@お腹いっぱい。 [sage]
2014/11/26(水)06:48:48.66.net
57名無しさん@お腹いっぱい。 [sage]
t=; for val in $VLIST; do t="$val $t"; done
for val in $t
do
echo "$val"
done
2014/11/26(水)06:50:18.91.net
58名無しさん@お腹いっぱい。 [sage]
2014/11/26(水)06:51:47.26.net
59名無しさん@お腹いっぱい。 [sage]
VLIST='1 2 3'
func()
{
if [ $# -gt 1 ]; then
(shift; func "$@")
fi
echo ""
}
func $VLIST
2014/11/26(水)07:03:58.55.net
60名無しさん@お腹いっぱい。 [sage]
2014/11/26(水)12:51:29.43.net
61名無しさん@お腹いっぱい。 [sage]
2014/11/26(水)12:59:26.09.net
62名無しさん@お腹いっぱい。 [sage]
即レスかっけー!これは濡れるw
2014/11/26(水)17:31:45.44.net
63名無しさん@お腹いっぱい。 [sage]
2014/11/26(水)19:08:42.67.net
64名無しさん@お腹いっぱい。 [sage]
VLIST='1 2 3 4 5'
val=($VLIST)
while [ ${#val[@]} -gt 0 ]; do
echo ${val[${#val[@]}-1]}
unset val[${#val[@]}-1]
done
2014/11/26(水)20:30:20.12.net
65名無しさん@お腹いっぱい。 [sage]
どうせbash使うなら素直にこうやれよ
↓
#!/bin/bash
VLIST='1 2 3 4 5'
val=($VLIST)
for ((i=${#val[@]}-1; i >= 0; i--)) {
echo ${val[i]}
}
2014/11/26(水)21:05:02.38.net
66名無しさん@お腹いっぱい。 [sage]
VLIST="1 2 3"
set $VLIST
for val in
do
echo $val
done
2014/11/27(木)02:55:58.45.net
67名無しさん@お腹いっぱい。 [sage]
echo
でええやん…
2014/11/27(木)03:03:45.58.net
68名無しさん@お腹いっぱい。 [sage]
bash/zsh なら local 変数使ってこんな感じに
function reverse {
local arg=""
[ $# -gt 0 ] &&
{ shift; reverse "$@"; echo -n "$arg "; }
}
最後の改行はどうすべぇ…
2014/11/27(木)03:42:20.68.net
69名無しさん@お腹いっぱい。 [sage]
function reverse {
function _reverse {
local arg=""
[ $# -gt 0 ] &&
{ shift; _reverse "$@"; echo -n "$arg "; }
}
_reverse "$@" | sed 's/ $/\n/'
}
2014/11/27(木)04:05:50.71.net
70名無しさん@お腹いっぱい。 [sage]
もっと綺麗にならんかね
2014/11/27(木)12:26:34.92.net
71名無しさん@お腹いっぱい。 [sage]
2014/11/27(木)13:33:00.01.net
72名無しさん@お腹いっぱい。 [sage]
他人のコードをメンテしたり機能追加したことのない奴が言うセリフ
2014/11/27(木)14:14:44.52.net
73名無しさん@お腹いっぱい。 [sage]
一回動けばそれでいい使い捨てのスクリプトもある
それだけの話っしょ
2014/11/27(木)14:31:21.58.net
74名無しさん@お腹いっぱい。 [sage]
2014/11/27(木)14:32:04.95.net
75名無しさん@お腹いっぱい。 [sage]
2014/11/27(木)14:43:04.36.net
76名無しさん@お腹いっぱい。 [sage]
2014/11/27(木)15:06:22.08.net
77名無しさん@お腹いっぱい。 [sage]
2014/11/27(木)15:08:35.87.net
78名無しさん@お腹いっぱい。 [sage]
2014/11/27(木)15:12:04.96.net
79名無しさん@お腹いっぱい。 [sage]
2014/11/27(木)15:23:18.84.net
80名無しさん@お腹いっぱい。 [sage]
2014/11/27(木)17:23:22.21.net
81名無しさん@お腹いっぱい。 [sage]
2014/11/27(木)17:40:12.56.net
82名無しさん@お腹いっぱい。 [sage]
2014/11/27(木)18:27:07.18.net
83名無しさん@お腹いっぱい。 [sage]
2014/11/27(木)19:50:57.59.net
84名無しさん@お腹いっぱい。 [sage]
書いた「つもり」だからだろ
2014/11/28(金)00:13:06.85.net
85名無しさん@お腹いっぱい。 [sage]
2014/11/28(金)00:35:46.31.net
86名無しさん@お腹いっぱい。 [sage]
シェルスクリプトに問題が出て治す必要があるなら
最初から書いた方が良いよ、、その時の実力で
最良のものが書ける。
1度書いた流れなら数年経っても頭に残ってるから
高速で仕上がるし、できた物を比べても大した違いは無い事も多い。
駆け出しの頃の書き物はまったく変わるのかもしれないが
それはそれで、全く変わらないと困るだろ。
過去の駄作に手をいれてジタバタしたって無駄
2014/11/28(金)05:41:19.53.net
87名無しさん@お腹いっぱい。 [sage]
「これこういう風に変えられない?」とか言われて白目になったことはある。
もちろん一般化できる話じゃないとは思うけど。
2014/11/28(金)08:44:15.84.net
88名無しさん@お腹いっぱい。 [sage]
echo "1^M2"で2しか表示されません何故ですか?
echo "1\r2"もそうでした
echo "1\n2"はちゃんと改行されて1と2が表示されました
^M \r \nってどう使い分けるものですか?
^MはCTRL+V CTRL+Mで入力しました
2014/11/28(金)12:08:04.77.net
89名無しさん@お腹いっぱい。 [sage]
\nと^Jは同じでLF。
CRとLFの違いは自分で調べろ。
2014/11/28(金)12:22:58.74.net
90名無しさん@お腹いっぱい。 [sage]
LFは低周波であることはわかりましたが、
そこから先がわかりません、よろしく女教授ください。
2014/11/28(金)12:35:54.36.net
91名無しさん@お腹いっぱい。 [sage]
2014/11/28(金)12:50:56.72.net
92名無しさん@お腹いっぱい。 [sage]
2014/11/28(金)13:03:16.65.net
93名無しさん@お腹いっぱい。 [sage]
Linuxは0xJで改行、BSDは0xMで改行しますよね。
どうしてこういう違いができたんでしょう?
簡単に返還する方法はありますか?
2014/11/28(金)13:54:56.36.net
94名無しさん@お腹いっぱい。 [sage]
これってHP依存コマンドだっけ?
2014/11/28(金)14:34:44.34.net
95名無しさん@お腹いっぱい。 [sage]
2014/11/28(金)14:46:02.61.net
96名無しさん@お腹いっぱい。 [sage]
改変コピペにかまうな
2014/11/28(金)15:13:15.53.net
9788 [sage]
例えば
a<CR>
b<CR>
だったらbしか表示されないってことですか?
2014/11/28(金)20:10:29.27.net
98名無しさん@お腹いっぱい。 [sage]
2014/11/28(金)20:11:01.93.net
99名無しさん@お腹いっぱい。 [sage]
http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%AA%E3%83%83%E3%82%B8%E3%83%BB%E3%83%AA%E3%82%BF%E3%83%BC%E3%83%B3
この辺の話ね。
2014/11/28(金)20:12:58.92.net
100名無しさん@お腹いっぱい。 [sage]
2014/11/28(金)20:20:08.06.net
101名無しさん@お腹いっぱい。 [sage]
2014/11/28(金)20:30:52.68.net
102名無しさん@お腹いっぱい。 [sage]
2014/11/28(金)21:00:51.14.net
103名無しさん@お腹いっぱい。 [sage]
>>102に許可が射るのか?
2014/11/28(金)21:47:52.95.net
104名無しさん@お腹いっぱい。 [sage]
その次に通る道はBOM…だったけど最近はWindows触ってないから今どうなってるのか分からん
2014/11/28(金)22:03:40.21.net
105名無しさん@お腹いっぱい。 [sage]
こんな反応じゃダメ?
2014/11/28(金)22:38:41.11.net
106名無しさん@お腹いっぱい。 [sage]
HTMLはWindowsで作ってるらしくgrepとsedで抽出したあとCRのごみがついてることに気がついた
なのでCR削除したんだけどsambaで共有してるディレクトリに置いていたファイルを
メモ帳で開くことがあってまたぐちゃぐちゃに、まあTeraPadとかで開けばいいんだけど
環境に依存してしまうので再度CRくっ付けて解決したな
2014/11/28(金)23:06:22.07.net
107名無しさん@お腹いっぱい。 [sage]
2014/11/28(金)23:11:48.20.net
108名無しさん@お腹いっぱい。 [sage]
2014/11/28(金)23:48:34.23.net
109102 [sage]
そのあたりから定期的に張られる改変コピペだろうと思っただけなんだが
今回やたらみんな親切だから気になっただけだ
2014/11/29(土)00:39:08.93.net
110名無しさん@お腹いっぱい。 [sage]
2014/11/29(土)00:48:29.81.net
111名無しさん@お腹いっぱい。 [sage]
2014/11/29(土)01:05:04.71.net
112名無しさん@お腹いっぱい。 [sage]
1\r2
2014/11/29(土)01:37:27.48.net
113名無しさん@お腹いっぱい。 [sage]
2014/11/29(土)01:49:55.58.net
114名無しさん@お腹いっぱい。 [sage]
2014/11/29(土)01:50:33.86.net
115名無しさん@お腹いっぱい。 [sage]
2014/11/29(土)06:46:31.93.net
116名無しさん@お腹いっぱい。 [sage]
その後誘導されてこっちに移動してきた
2014/11/29(土)09:29:20.23.net
117名無しさん@お腹いっぱい。 [sage]
2014/11/29(土)10:00:47.02.net
118名無しさん@お腹いっぱい。 [sage]
2014/11/29(土)10:56:38.77.net
119名無しさん@お腹いっぱい。 [sage]
これいやらしくて自分も引っかかったんだけど
>>112はshで目的の動作をしてbashだとだめなんだよな
自分はシェルがbashでスクリプトはshなんだけど
実行結果が違うから引っかかって結構悩んだ
2014/11/29(土)11:00:44.61.net
120名無しさん@お腹いっぱい。 [sage]
2014/11/29(土)12:05:12.75.net
121名無しさん@お腹いっぱい。 [sage]
2014/11/29(土)12:07:01.30.net
122名無しさん@お腹いっぱい。 [sage]
2014/11/29(土)12:12:50.64.net
123名無しさん@お腹いっぱい。 [sage]
2014/11/29(土)12:27:45.78.net
124名無しさん@お腹いっぱい。 [sage]
printfを使うか>>114のように展開するのがいいみたいね
https://fumiyas.github.io/2013/12/08/echo.sh-advent-calendar.html
http://mattintosh.hatenablog.com/entry/2013/12/11/201503
2014/11/29(土)13:00:19.16.net
125名無しさん@お腹いっぱい。 [sage]
2014/12/04(木)14:50:44.76.net
126名無しさん@お腹いっぱい。 [sage]
http://stackoverflow.com/questions/15461737/how-to-execute-xpath-one-liners-from-shell
http://stackoverflow.com/questions/4680143/how-to-parse-xml-using-shellscript
2014/12/05(金)07:55:18.64.net
127名無しさん@お腹いっぱい。 [sage]
現在下記のようなシェルスクリプトを書いています。
trap 'echo "ERROR!!" ; exit 1' ERR
hoge 2>&1 | tee test.log
hoge2 2>&1 | tee test.log
hoge3 2>&1 | tee test.log
hoge4 2>&1 | tee test.log
コマンド結果の標準出力と標準エラー出力の両方を
ログファイルに残したいのですが
この場合、最初のコマンドで戻り値に1が返されても
次のteeコマンドで戻り値が0になってしまうため
trapで適切にエラーハンドリングできない状態です。
pipestatus使えば何とかなりそうなのですが
その場合コマンドを実行するたびにif文で
pipestatusを評価する必要があるため、冗長に感じてしまいます。
そのためもしより良い解決方法がありましたらご教授いただけませんか。
2014/12/07(日)12:25:15.01.net
128名無しさん@お腹いっぱい。 [sage]
err_and_exit () {
trap 'echo "ERROR!!" ; exit 1' ERR
eval "$@"
}
err_and_exit 'hoge' 2>&1 | tee test.log
2014/12/07(日)12:45:10.31.net
129名無しさん@お腹いっぱい。 [sage]
全部まとめて tee して、コマンドは && でつなげばエラーがあれば途中で打ち切ってくれるよ。
( hoge && hoge2 && hoge3 && hoge ) 2>&1 | tee test.log
2014/12/07(日)13:35:25.85.net
130129 [sage]
( hoge && hoge2 && hoge3 && hoge4 ) 2>&1 | tee test.log
2014/12/07(日)13:37:42.00.net
131名無しさん@お腹いっぱい。 [sage]
2014/12/07(日)17:01:01.11.net
132名無しさん@お腹いっぱい。 [sage]
#!/bin/bash
exec > >(tee test.log) 2>&1
trap 'echo "ERROR!!" ; exit 1' ERR
hoge
hoge2
hoge3
hoge4
2014/12/07(日)17:03:41.55.net
133名無しさん@お腹いっぱい。 [sage]
2014/12/07(日)17:16:16.20.net
134名無しさん@お腹いっぱい。 [sage]
お礼が遅くなりましたが、ご回答ありがとうございました。
今回用途としてはコマンドを実行してエラーが発生した段階で
スクリプトを終了させたかったため、下記のような記述に変更しました。
(hoge && hoge2 && hoge3 && hoge4 ) 2>&1 | tee test.log
[ ${PIPESTATUS[0]} - ne 0 ] && exit 1
hoge5
hoge6
>>127と比べると「tee test.log」の重複した記述もなくなったので
少しすっきりしたように感じます。
良い解決方法を教えていただき、ありがとうございました。
2014/12/07(日)21:22:56.83.net
135名無しさん@お腹いっぱい。 [sage]
2014/12/11(木)09:38:51.84.net
136名無しさん@お腹いっぱい。
かしてください。
テキストの処理で、数千kBほどのテキストファイルをスクリプト
で処理したいと思っています。環境はCENTOS6.5(i686,32ビット)
で、シェルはBASHです。
シェルスクリプトの最初の方で得られた変数があり、これは動的に変化
します。
START="`grep start`"(←実際はgrepのあとにも処理あり)
END="`grep end`"
二つには行番号が入っており、これをsedのアドレスの指定に使って
START行からEND行までを削除させたいのです。この段階でデバグ
のため、START、ENDともスクリプト途中にechoで表示させて値が
きちんと入っているのを確認しています。
具体的には
sed -e "$START,$ENDd" /dir/file
を実行させても、sedは「,」が未知のコマンドです、と言ってき
ます。
sed -e "${START},${END}d" /dir/file
でも
sed -e '"${START}","${END}"d' /dir/file
でも駄目でした。sedが$を最終行と勘違いしているのかと
sed -e "$START,$ENDd" /dir/file
としてみても、これも駄目でした。
そもそも、sedのパラメータには変数は使えないのでしょうか?
同じ事がスクリプト中でできれば、sedでなくても構いませんが。
他におもいつきません。
2014/12/12(金)12:07:03.36.net
137名無しさん@お腹いっぱい。 [sage]
sed ${START},${END}d /dir/file
で行けるよ。
変数 START ENDに余分なスペースが入ってないか注意。
スペース取るには、
START=`echo $START`
END=`echo $ECHO`
で、代入し直す。
2014/12/12(金)12:30:40.72.net
138名無しさん@お腹いっぱい。 [sage]
sed "${START},${END}d" /dir/file
2014/12/12(金)12:34:18.14.net
139名無しさん@お腹いっぱい。 [sage]
END=2
printf "foo\nbar\nbaz\n" | sed "${START},${END}d"
=> baz
printf "foo\nbar\nbaz\n" | sed " ${START} , ${END} d"
=> baz
2014/12/12(金)12:39:48.69.net
140名無しさん@お腹いっぱい。 [sage]
> sedは「,」が未知のコマンドです、と言ってき
これ、START 変数が undef か空っぽ("")なんじゃない?
set -x してからスクリプトを実行してみて確かめたほうがいいよ。
2014/12/12(金)12:44:39.31.net
141名無しさん@お腹いっぱい。 [sage]
2014/12/12(金)12:45:54.06.net
142名無しさん@お腹いっぱい。 [sage]
2014/12/12(金)12:55:10.57.net
143名無しさん@お腹いっぱい。 [sage]
sed: -e 表現 #1, 文字数 1: 未知のコマンドです: 「,」
2014/12/12(金)13:05:14.93.net
144名無しさん@お腹いっぱい。
2014/12/12(金)14:02:50.73.net
145名無しさん@お腹いっぱい。
デバグ用の
echo $START
echo $END
の直後に、
START=`echo $START`
START=`echo $END`
を追加して実行したところ、な、な、なんと!
思い通りの結果が得られました。この一週間悩んだのが
たった2行の追加でクリアされました。なんかポカーン状態
ですが。。。
画面上では空白が入ってないように見えただけかもしれま
せん。>>137 さん助かりました。ありがとうございます。
>>139 さんの書かれたprintf文、参考になりました。まずこ
れを試してみるべきでしたね。
2014/12/12(金)14:35:13.48.net
146名無しさん@お腹いっぱい。 [sageteoff]
^Mのやつ
2014/12/12(金)14:52:02.24.net
147名無しさん@お腹いっぱい。
これのことだったのか、がてんいきました。
2014/12/12(金)15:06:40.30.net
148名無しさん@お腹いっぱい。 [sage]
START=`echo $START`
やっても^Mは取れないから、違うと思うぞ
2014/12/12(金)15:38:25.84.net
149名無しさん@お腹いっぱい。 [sage]
あいだに要素を追加したりとか
2014/12/12(金)18:17:01.24.net
150名無しさん@お腹いっぱい。 [sage]
2014/12/12(金)19:08:12.46.net
151名無しさん@お腹いっぱい。 [sage]
2014/12/12(金)19:58:42.72.net
152名無しさん@お腹いっぱい。 [sage]
xslt使えよ
2014/12/12(金)20:44:30.25.net
153名無しさん@お腹いっぱい。 [sage]
「のようなこと」ってあるから別の何かかと思った
使ったことは無いんだけど、XMLgawkが便利そう
2014/12/13(土)00:48:34.76.net
154名無しさん@お腹いっぱい。 [sage]
2014/12/13(土)03:47:01.58.net
155名無しさん@お腹いっぱい。
知らなかった。。。ash系なのか、ダッシュ島系なのか
2014/12/15(月)19:52:22.36.net
156名無しさん@お腹いっぱい。 [sage]
2014/12/15(月)20:11:02.18.net
157グールドの著作を読むなら原書で
#!/bin/csh -f
### Compact wise program that extracts user's first name only from result of "finger" command on UNIX without any Admin rights ###
set who = `finger -m $user`
echo -n ' Hi '"$who[7]" echo '\!' (= Hi YOURNAME!)
# First name comes at 7th place divided by spaces
当時の基準で採点してみてください。当時はこういうユーザフレンドリなプログラム見かけなかったんだけど。環境が違えばあったのかな?
2014/12/16(火)15:34:56.67.net
158名無しさん@お腹いっぱい。 [sage]
1993年ってもうSVR4とかある時代だからそんなに古くないし、スクリプト内容も見所がない。
何を採点して欲しいやら。
強いて言うと、
cshスクリプト - 大減点
echoコマンドを2回に分ける必要ない - 減点
echoコマンドのところ改行のコピペミス?
fingerコマンドの出力って環境によってたぶん違うよ。
ちなみにこちらの環境では finger の 4番目の位置にファーストネームが入る。
#!/bin/sh
set `finger -m $USER`
echo ' Hi '""'!'
2014/12/16(火)17:02:19.69.net
159グールドの著作を読むなら原書で
echoコマンドはこういう遣り方じゃないと勝手に改行が入って苦労しました。
!も特殊文字扱いだったということでしょう。
それはさておきいちいちwhoとか名前付けてsetしなくてよいということですね。
こういうプログラムって当時からやってました?
sfcって遅れたキャンパスだったので、他大学の工学部などでは常識でも
あのキャンパスでは非常識ということも多々あるかと思います。
とにかくHi [first name]っていうプログラムを動かしてたのは学内で自分だけでした。
プログラムの全体はLaTeXをエクステンション除いたファイル名だけ打ち込めば
任意のプリンタから自動印刷できるという内容なんですがね。
2014/12/16(火)17:23:03.61.net
160名無しさん@お腹いっぱい。 [sage]
2014/12/16(火)17:28:04.57.net
161グールドの著作を読むなら原書で
基本的な構造はAmazon.comなどで金になってる商売だから。
2014/12/16(火)17:38:54.20.net
162名無しさん@お腹いっぱい。 [sage]
どこにでも普通に転がってるスクリプトだし、なんの変哲もないヘボスクリプトの何を評価しろとw
2014/12/16(火)17:51:39.82.net
163グールドの著作を読むなら原書で
2014/12/16(火)17:54:06.78.net
164名無しさん@お腹いっぱい。 [sage]
2014/12/16(火)17:54:28.41.net
165グールドの著作を読むなら原書で
2014/12/16(火)17:58:23.52.net
166名無しさん@お腹いっぱい。 [sage]
/etc/passwdは一般ユーザーでももともと読めるし、(たとえshadowでもパスワード部分以外は)
NIS使ってるならypcat passwdは一般ユーザーでもできるし。
何の新規性もない。
2014/12/16(火)18:23:54.80.net
167グールドの著作を読むなら原書で
そうではなくて、大したことの無いアイデアが金になることがある、ということを強調している。
Amazon.com等々が誰かに金を払っているのは事実の筈だし。無論アドミン権限の中のプログラム
であってもデータから抜き出す作業は同じ。で、Amazonとかできた当初はHi某とか言ってこなかった
筈なので、そこら辺の経緯を知りたいわけ。日本語では英語名で抜き出すのは日本語名で抜き出す
よりは厄介な筈。他に方法いくらでもあるから。
2014/12/16(火)18:38:28.60.net
168名無しさん@お腹いっぱい。 [sage]
2014/12/16(火)18:43:25.43.net
169名無しさん@お腹いっぱい。 [sage]
ちなみにBBSにおいてユーザーの識別子として一方向ハッシュを表示する手法を、提唱したのは俺だ。
2014/12/16(火)20:12:06.60.net
170名無しさん@お腹いっぱい。 [sage]
2014/12/16(火)21:46:14.47.net
171名無しさん@お腹いっぱい。 [sage]
2014/12/17(水)00:10:11.34.net
172名無しさん@お腹いっぱい。 [sage]
ってのがあったんだ。
知らなかった。。。ash系なのか、ダッシュ島系なのか
2014/12/19(金)14:14:12.27.net
173名無しさん@お腹いっぱい。
しっかりしろ
2014/12/23(火)07:08:11.72.net
174名無しさん@お腹いっぱい。 [sage]
学生さんは冬休みに、買ってもらった
Mac, iPhone, android でシェルスクリプトを書いて遊ぼう!
2014/12/25(木)17:52:08.23.net
175名無しさん@お腹いっぱい。 [sage]
学生なら自分で買うわ。
生徒や児童なら買ってもらうかも知れんが。
2014/12/25(木)18:54:27.87.net
176あ [sage]
/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://ヽ:::::::::::::::|
l:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::// ヽ::::::::::::::l
l:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/:::「'ヽ:::::::::::// ヽ:::::::::::|
|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ノl:::ノ l:::::::/ ヽ::::::::|
ノ:::::::::::::::::::::::::::::::::::::::::::::::::::::/ ゙゙ ノ:::/ ,,;;;;;;,, ,,,,ヽ:::::l
):::::::::::::::::::::::::::::::::::::::::::::::/ ノ/ __,'''i: ('''__):::l
)::::::::::::::::::::::::::::::::::::::::::::::::::/  ̄ ̄ン:. :「 ̄`ヾ
1:::::::::::::::::::::::「 `┤l:::::::::::::::::l  ̄ , ヽ ̄ l
`l:::::::::::::::::::::ヽ :l li:::::::::::::/ ヽ /´ `l |
ヽ::::::::::::::::::::::\_」 lヽ::::/ .l !:-●,__ ノ /
ノ:::::::::::::::::::::::::::ノ | l `゙゙ i ,,;;;;;;;;;;;;;;;;;;;;, /ヽ
,/ ヽ::::::::::::::::::::::( l l::::::::.. /.:''/´ ̄_ソ / `ヽ
ヽ:::::::::::::::ヽ | l:::::::::::... /::// ̄ ̄_ソ / \ ヴッ!!
ヽ:::::::\| l::::::::::::::::... / :::.ゝ` ̄ ̄/ / ヽ
ヽ:::l l:::::::::::::::::::..  ̄ ̄;;'' / ヽ
l l;;;;;;:::::::::::::::.....;;;;............;;;;;;''ノ l
l l '''''''''''''''''''''''''''''''''''''' ̄l | |
http://www.youtube.com/watch?v=z2qK2lhk9O0
2014/12/25(木)19:32:27.25.net
177名無しさん@お腹いっぱい。
cronでスクリプト最速で回すとすると
* * * * * /home/user/hoge.sh
だけど、これ以上の頻度というか速度で実行できないのかな。
無限ループ覚悟で、hoge.shの最後に自分自身をコールするとか。
2014/12/26(金)09:25:20.89.net
178名無しさん@お腹いっぱい。 [sage]
2014/12/26(金)09:36:37.85.net
179名無しさん@お腹いっぱい。 [sage]
何かの待ち受けイベントチェックか?
普通にsleep 1とかしながらループすればいいじゃん。cron必要なし。
自分自身をコールするするのは無駄だからwhile :; do hoge; sleep 1; done で無限ループな。
2014/12/26(金)09:36:40.46.net
180名無しさん@お腹いっぱい。 [sage]
2014/12/26(金)09:55:10.70.net
181名無しさん@お腹いっぱい。
そうです、自宅鯖で、smtpからweb、ssh、イベント監視まで
全部やらせてるマシン。あんまとっぴなことすると、落ちそう
なので。sleep入れれば、変な挙動はなくなりそうですね。
感謝!
2014/12/26(金)10:01:04.07.net
182名無しさん@お腹いっぱい。
さっそくcronをやめて、do while ( `nantoka` ) done方式に変更。
前にcase文をつけてstart、stop、resartで起動、停止
できるようにした。sleep_secは10秒。これで様子みます。
しかし、良スレですね、ここは。いつも助けていただき感謝です。
2014/12/26(金)12:23:03.31.net
183名無しさん@お腹いっぱい。
今浦島な私には、pgrep、pkillというコマンドが使える
のが素晴らしいと思いました。(最近知った)
なんか昔は、kill -9 `pidof nantoka`とかやってたのが
なつかしいというか。
2014/12/26(金)12:27:53.31.net
184名無しさん@お腹いっぱい。 [sage]
2014/12/26(金)13:13:19.56.net
185名無しさん@お腹いっぱい。 [sage]
2014/12/27(土)13:16:10.86.net
186名無しさん@お腹いっぱい。 [sage]
学生さんは冬休みに、買ってもらった
Mac, iPhone, android でシェルスクリプトを書いて遊ぼう!
2014/12/31(水)06:28:21.74.net
187名無しさん@お腹いっぱい。 [sage]
2014/12/31(水)13:02:42.92.net
188名無しさん@お腹いっぱい。 [sage]
2014/12/31(水)13:58:30.05.net
189名無しさん@お腹いっぱい。 [sage]
ただ調べた結果だけなので自己責任で
* インターネットブラウザーのjavascript上で走るLinuxで
http://bellard.org/jslinux/
* もしくは、インターネットブラウザーでwebアプリ
http://ideone.com/
http://www.tutorialspoint.com/codingground.htm
* もしくは、sshで他マシンにアクセス
試した事はないけど、学習用のFree UNIX Shell Accountsとかもある
http://freeshell.org/
* Jailbreak
2014/12/31(水)19:47:38.53.net
190名無しさん@お腹いっぱい。 [sage]
でw3mを使って検索文字列でググる要にしているのを拡張したい
具体的には
コピーしてクリップボードの中に入ってる文字で検索しようと思う
それ自体は簡単なのだけど、問題は --clipboard や -c のオプションを付けた時に実行されるのか、(ggl -c)
それとももっとルーズに (ggl) と引数無しの状態で実行するか悩んでいる
オプションとかのガイドラインてある?
例えば -l はリスト(at -l など)で使うとか、多くのコマンドは
引数がない時は -h オプションと同じように簡単な説明がでるとかのメジャーなガイドライン
2015/01/01(木)17:27:22.86.net
191名無しさん@お腹いっぱい。 [sage]
2015/01/01(木)18:19:12.95.net
192名無しさん@お腹いっぱい。 [sage]
2015/01/01(木)18:26:54.79.net
193名無しさん@お腹いっぱい。 [sage]
ガイドラインというのはわからないが、こんな感じで使われてるね〜みたいのなら、
http://catb.org/~esr/writings/taoup/html/ch10s05.html
> The -a to -z of Command-Line Options
>
> Over time, frequently-used options in well-known Unix programs have established a loose sort of semantic standard
> for what various flags might be expected to mean. The following is a list of options and meanings that should prove
> usefully unsurprising to an experienced Unix user:
http://www.gnu.org/prep/standards/html_node/Option-Table.html
> 4.9 Table of Long Options
>
> Here is a table of long options used by GNU programs. It is surely incomplete, but we aim to list all the options that
> a new program might want to be compatible with. If you use names not already in the table, please send
> bug-standards@gnu.org a list of them, with their meanings, so we can update the table.
2015/01/01(木)18:29:20.31.net
194名無しさん@お腹いっぱい。 [sage]
2015/01/01(木)20:15:18.38.net
195名無しさん@お腹いっぱい。 [sage]
自分の名前がgglかgglcかで動作が変わるのも面白そう。
2015/01/01(木)22:28:20.83.net
196名無しさん@お腹いっぱい。 [sage]
2015/01/01(木)22:31:09.64.net
197名無しさん@お腹いっぱい。 [sage]
*BSD, Linuxならlibcで持ってるものなんだな。
とあるソフトがGNUのgetopt.cを同梱しているので消してやりたいと思って
いたんだけど、configureでgetoptの存在チェックしてlibcの方を優先して
使わせるようにするのがいいのかな。
2015/01/03(土)21:18:53.70.net
198名無しさん@お腹いっぱい。 [sage]
2015/01/08(木)11:56:42.54.net
199名無しさん@お腹いっぱい。 [sage]
なんで?
2015/01/08(木)12:01:18.92.net
200名無しさん@お腹いっぱい。 [sage]
4. Conveying Verbatim Copies.
5. Conveying Modified Source Versions.
2015/01/08(木)12:15:36.60.net
201名無しさん@お腹いっぱい。 [sage]
詳しく
2015/01/08(木)13:17:19.27.net
202名無しさん@お腹いっぱい。
22, 32, 33, 45,
12, 47, 78, 44, 32,
...
数字がカンマで区切って700個書いてあるファイルがあります。
一行に数字が何個あるか規則性はありません。
このファイルを読み込んで数字を100個ずつ出力して7枚のファイルを
作りたいと思っています。シェルスクリプトでうまくできますでしょうか。
出力されたファイルには数字が一列で入っているほうがいいです。
お願いします。
2015/01/08(木)18:53:35.81.net
203名無しさん@お腹いっぱい。 [sag]
awk -v RS='' -v FPAT='( *[0-9]+, *\n?){1,100}' \
'{
for(i=1;i<=NF;i++){
gsub(" *\n"," ",$i);
gsub(", *$","",$i);
print $i > i ".txt";
}
}' a.txt
上手く行けば 1.txt ... 7.txt というファイルができるはず
2015/01/08(木)19:41:16.46.net
204名無しさん@お腹いっぱい。 [sage]
awk -v RS=, '{print +0 > int(NR/100)+1 ".txt" }'
2015/01/08(木)20:20:07.70.net
205名無しさん@お腹いっぱい。 [sage]
2015/01/08(木)20:36:37.66.net
206203 [sage]
2015/01/08(木)20:51:41.18.net
207203 [sage]
2015/01/08(木)20:56:03.24.net
208名無しさん@お腹いっぱい。 [sage]
見易さの為-r付けてます
#!/bin/sh
sed -re '
:loop;
$! {
N;
b loop;
}
s/,[ \n]+/, /g;
s/([0-9]+, ){100}/&\n/g;
' | {
i=1
while read line
do
echo "$line" > "$(( i++ )).txt"
done
}
2015/01/08(木)21:09:50.76.net
209名無しさん@お腹いっぱい。 [sage]
tr -d '\r\n' < file
2015/01/08(木)21:43:46.83.net
210名無しさん@お腹いっぱい。 [sage]
i=1
while [ $i -le 7 ]; do
(j=1; while [ $j -le 100 ]; do echo ""; shift; done) > $i.txt
2015/01/08(木)21:52:48.42.net
211209 [sage]
tr -d '\r\n' < file | tr ',' '\n' | split -l 100
2015/01/08(木)21:57:31.95.net
212名無しさん@お腹いっぱい。 [sage]
set -- `sed 's/,/ /g' input.txt`
i=1
while [ $i -le 7 ]; do
(j=1; while [ $j -le 100 ]; do echo ""; shift; j=$((j + 1)); done) > $i.txt
shift 100
i=$((i + 1))
done
2015/01/08(木)21:58:20.67.net
213209 [sage]
お前は俺か
2015/01/08(木)22:01:45.08.net
214名無しさん@お腹いっぱい。 [sage]
2015/01/08(木)23:07:34.58.net
215名無しさん@お腹いっぱい。 [sage]
file=`cat ""`
for i in `seq 1 7`; do
for j in `seq 1 100`; do
echo -n ${file%%,*}, >>$i.txt
file=${file#*,}
done
done
2015/01/09(金)00:45:24.74.net
216名無しさん@お腹いっぱい。 [sage]
$ grep -Po '[0-9]+' data.txt | parallel --pipe -L 100 -n 1 -k 'cat - > {#}.txt'
2015/01/09(金)01:53:20.06.net
217名無しさん@お腹いっぱい。 [sage]
$ grep -o '[0-9]\+' data.txt | split -l 100
2015/01/09(金)01:59:25.49.net
218名無しさん@お腹いっぱい。 [sage]
とりあえずscから見ているが
2015/01/10(土)02:47:23.50(xezKGq2J7)
219202 [sage]
2015/01/11(日)18:59:23.53.net
220名無しさん@お腹いっぱい。 [sage]
{}が引っかかってしまったのだろうか? どうすればよいのだろうか?
while true
do read SEARCH
awk 'BEGIN{RF="---"}/${SEARCH}/' $save_to
done
2015/01/14(水)13:42:56.50.net
221名無しさん@お腹いっぱい。 [sage]
2015/01/14(水)13:55:03.85.net
222名無しさん@お腹いっぱい。 [sage]
多少書き換えてみました
しかし、まだ動きません
clp.sh
do read SEARCH
export SEARCH
awk -f ~/sbin/h_Searher.awk $save_to
done
~/sbin/h_Searher.awk
BEGIN{RF="---"}/$SEARCH/
2015/01/14(水)14:41:45.54.net
223名無しさん@お腹いっぱい。 [sage]
たった1行のためにつまずくとは悔しい
do
perl ~/Perl_instance/clp.pl
done
~/Perl_instance/clp.pl
open FH, '<', '$save_toと同じファイル';
my @LOG = <FH>;
close FH;
my $sentence = join ' ', @LOG;
my @field = split /---/, $sentence;
# my $search = "Ano";
chomp(my $search = <STDIN>);
for my $lines (@field) {
if ( $lines =~ m/${search}/ ) {
print "---\n";
print "$lines\n";
}
}
2015/01/14(水)17:08:45.99.net
224名無しさん@お腹いっぱい。 [sage]
awk 'BEGIN{RF="---"}/'${SEARCH}'/' $save_to
2015/01/15(木)10:05:06.27.net
225名無しさん@お腹いっぱい。 [sage]
thanks!
2015/01/15(木)12:37:55.02.net
226名無しさん@お腹いっぱい。 [sage]
2015/01/15(木)13:19:56.10.net
227名無しさん@お腹いっぱい。 [sage]
awk -v SEARCH="$SEARCH" 'BEGIN{RF="---"}/SEARCH/' $save_to
2015/01/15(木)18:30:18.23.net
228名無しさん@お腹いっぱい。 [sage]
なんと月刊で20号以上出ているということにも驚いた。
シェルスクリプトマガジン vol.21
http://www.amazon.co.jp/dp/4904807154/
https://www.usp-lab.com/pub.magazine.html
2015/01/20(火)01:40:59.45.net
229名無しさん@お腹いっぱい。 [sage]
2015/01/20(火)05:22:18.17.net
230名無しさん@お腹いっぱい。 [sage]
2015/01/21(水)01:45:14.76.net
231名無しさん@お腹いっぱい。
数日悩んだ結果。。。原因はLANGだった
2015/01/22(木)16:29:19.37.net
232名無しさん@お腹いっぱい。 [sage]
2015/01/22(木)16:32:53.58.net
233名無しさん@お腹いっぱい。 [sage]
2015/01/22(木)16:48:29.41.net
234名無しさん@お腹いっぱい。 [sage]
2015/01/22(木)17:14:56.12.net
235名無しさん@お腹いっぱい。 [sage]
共通したものは crontab 先頭で、タスク毎のは env NAME=VALUE COMMAND
と答えるか、もうまるっきり答えないと予想した
2015/01/23(金)06:42:51.72.net
236名無しさん@お腹いっぱい。 [sage]
2015/01/23(金)10:00:16.40.net
237名無しさん@お腹いっぱい。 [sage]
自演っぽくて、コメントしづらい輪
2015/01/23(金)16:52:05.70.net
238名無しさん@お腹いっぱい。 [sage]
2015/01/23(金)17:30:03.53.net
239名無しさん@お腹いっぱい。 [sage]
的な書き方ってどこまで有効なのかな?
bashだけ?
2015/01/24(土)10:11:24.87.net
240名無しさん@お腹いっぱい。 [sage]
bourne shell でも使える
2015/01/24(土)10:23:49.81.net
241名無しさん@お腹いっぱい。 [sage]
2015/01/24(土)15:26:45.88.net
242名無しさん@お腹いっぱい。 [sage]
2015/01/24(土)15:41:53.70.net
243240 [sage]
しっくりくる表記法がないんだけど
2015/01/25(日)04:39:03.74.net
244名無しさん@お腹いっぱい。 [sage]
2015/01/25(日)05:18:01.83.net
245名無しさん@お腹いっぱい。 [sage]
使わないので規則などない
2015/01/25(日)11:18:23.60.net
246名無しさん@お腹いっぱい。 [sage]
同意
2015/01/25(日)11:45:02.72.net
247名無しさん@お腹いっぱい。 [sage]
2015/01/25(日)12:36:31.55.net
248名無しさん@お腹いっぱい。 [sage]
2015/01/25(日)13:47:36.00.net
249名無しさん@お腹いっぱい。 [sage]
2015/01/25(日)17:38:43.45.net
250名無しさん@お腹いっぱい。 [sage]
> じゃあ代わりにどうすればよいのだ?
> ポインタとか言い出すと見た
いかにも、めんどくさそう
2015/01/25(日)19:40:14.84.net
251名無しさん@お腹いっぱい。 [sage]
2015/01/25(日)19:46:57.10.net
252名無しさん@お腹いっぱい。 [sage]
xargsコマンドが好き。無理だと思ってた処理がワンライナーになる
いっそ、powershellみたいにjsonパイプラインみたいなのがあればいいのにって思う
2015/01/25(日)21:21:36.60.net
253名無しさん@お腹いっぱい。 [sage]
他どんな場面で使うっけ
2015/01/25(日)22:41:49.00.net
254名無しさん@お腹いっぱい。 [sage]
2015/01/25(日)23:37:38.84.net
255名無しさん@お腹いっぱい。
2015/01/26(月)12:06:00.33.net
256名無しさん@お腹いっぱい。 [sage]
ループになる
xargs loop で検索したら結構見つかるので
珍しくは無いんだろうが、まあ、一応
<<EOF xargs -I i sh -c 'seq 3 | xargs -I j echo i j'
foo bar
baz qux quux
corge
grault
EOF
2015/01/26(月)20:35:10.75.net
257名無しさん@お腹いっぱい。 [sage]
例えば find ... | xargs -P 12 -n 16 gzip とすると12プロセスがファイルの圧縮を行う
2015/01/27(火)02:26:05.37.net
258名無しさん@お腹いっぱい。 [sage]
2015/01/27(火)03:09:32.08.net
259名無しさん@お腹いっぱい。 [sage]
2015/01/27(火)06:47:01.92.net
260名無しさん@お腹いっぱい。 [sage]
2015/01/27(火)07:02:05.92.net
261名無しさん@お腹いっぱい。 [sage]
2015/01/27(火)07:38:50.39.net
262名無しさん@お腹いっぱい。 [sage]
2015/01/27(火)08:17:49.81.net
263名無しさん@お腹いっぱい。 [sage]
2015/01/27(火)08:20:05.07.net
264名無しさん@お腹いっぱい。 [sage]
実装によってはないのよ
2015/01/27(火)08:25:13.28.net
265名無しさん@お腹いっぱい。 [sage]
2015/01/27(火)08:28:26.16.net
266名無しさん@お腹いっぱい。 [sage]
移植すりゃいいじゃん
2015/01/27(火)12:18:24.66.net
267名無しさん@お腹いっぱい。 [sage]
-exec {} +
で用が足りる
2015/01/27(火)12:56:34.51.net
268名無しさん@お腹いっぱい。 [sage]
2015/01/27(火)13:01:19.27.net
269名無しさん@お腹いっぱい。 [sage]
そういう話じゃないよ
2015/01/27(火)13:29:38.19.net
270名無しさん@お腹いっぱい。 [sage]
半分冗談だよ、いちいち気にしてたら禿げるぞ
2015/01/27(火)13:41:29.10.net
271名無しさん@お腹いっぱい。 [sage]
冗談だとしても面白くないよ
2015/01/27(火)13:43:51.02.net
272名無しさん@お腹いっぱい。 [sage]
-exec \{\} +
とエスケープなりクォートで囲むなりするのを忘れる
2015/01/27(火)15:15:56.23.net
273名無しさん@お腹いっぱい。 [sage]
2015/01/27(火)16:27:07.47.net
274名無しさん@お腹いっぱい。 [sage]
理由はないんだけど
2015/01/27(火)21:10:27.07.net
275DAEMON [daemon@2ch.net]
2015/01/27(火)21:45:21.58.net
276DAEMON [daemon@2ch.net]
シ
タッ・・(Φ Φ+)・・・ 例えば、基礎公文で…
while (test) {
open test-file.txt(filehandle) ,
">test-file.pl"
print test-file.txt
close test-file.txt
}
斯様な様にですか…
2015/01/27(火)22:02:58.78.net
277名無しさん@お腹いっぱい。
で、{}をクォートする必要があるシェルって何?
2015/01/28(水)00:14:24.97.net
278名無しさん@お腹いっぱい。
ゃなくてもいいというので、0.1入れてやってみたら、ほんとに動
作してるっぽい。manには何も書いておらん。つかえねーman
2015/01/30(金)19:56:12.76.net
279名無しさん@お腹いっぱい。 [sage]
Historical implementations of `sleep' have required that NUMBER be
an integer, and only accepted a single argument without a suffix.
However, GNU `sleep' accepts arbitrary floating point numbers (using a
period before any fractional digits).
2015/01/30(金)20:00:01.61.net
280名無しさん@お腹いっぱい。
2015/01/30(金)21:57:35.82.net
281名無しさん@お腹いっぱい。 [sage]
2015/01/31(土)12:09:54.06.net
282名無しさん@お腹いっぱい。 [sage]
2015/01/31(土)13:19:36.31.net
283名無しさん@お腹いっぱい。 [sage]
v=${v:-default}
こうでしょ
: ${w:=default}
っていうの有りますか?皆さんの、そういうの教えて下さい
2015/01/31(土)17:47:20.57.net
284名無しさん@お腹いっぱい。 [sage]
echo -e 'hoge\nfuga'
こうでしょ
printf 'hoge\nfuga\n'
2015/02/01(日)00:46:16.74.net
285名無しさん@お腹いっぱい。 [sage]
2015/02/01(日)00:47:04.51.net
286名無しさん@お腹いっぱい。
2015/02/01(日)07:05:52.05.net
287名無しさん@お腹いっぱい。 [sage]
OSX の /bin/sh は bash だけど、同じ bash のはずなのに
bash -c "echo -e 'hoge\nfuga'" と sh -c "echo -e 'hoge\nfuga'" で
結果が違うとかめんどくさすぎる。
2015/02/01(日)13:49:52.79.net
288名無しさん@お腹いっぱい。 [sage]
こうじゃなくて
function f () {
echo hoge hoge
}
こうでしょ
f () {
echo hoge hoge
}
2015/02/01(日)18:28:40.97.net
289名無しさん@お腹いっぱい。 [sage]
最近やってるのがjavascriptだからかな
2015/02/01(日)19:10:32.63.net
290名無しさん@お腹いっぱい。 [sage]
個人的には環境変数と区別するために小文字なんだけど、
社内の他の人が書いたのを見ると大文字ばっかりなんだよな。
2015/02/02(月)10:43:19.51.net
291名無しさん@お腹いっぱい。 [sage]
2015/02/02(月)12:18:06.01.net
292名無しさん@お腹いっぱい。
linux mint 17.1 でコマンドの練習してるのですが、
% ls -l
だと色々ずらーっと出るんですけど、本に書いてあるとおり、
ソートコマンドを練習しようとして
% ls -l | sort +4
と打ち込んでファイルサイズで降順ソートしたかったのですが
sort: cannot read: +4: そのようなファイルやディレクトリはありません
と出てしまいます。
bashですが、シェルの種類によってはこのオプション使えないんでしょうか。
-r等は正常に動作します。
2015/02/02(月)21:56:58.79.net
293名無しさん@お腹いっぱい。 [sage]
sort -k4r
2015/02/02(月)22:04:13.81.net
294名無しさん@お腹いっぱい。
2015/02/02(月)22:34:00.27.net
295名無しさん@お腹いっぱい。 [sage]
sort +4と同じ指定はsort -k5
たぶんls -lでファイルの所有者が全て同じで、できたと勘違いしてる
--debugオプションをつけるとわかりやすい
https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html
> On older systems, sort supports an obsolete origin-zero syntax ‘+pos1 [-pos2]’ for specifying sort keys.
> The obsolete sequence ‘sort +a.x -b.y’ is equivalent to ‘sort -k a+1.x+1,b’ if y is ‘0’ or absent,
> otherwise it is equivalent to ‘sort -k a+1.x+1,b+1.y’.
sort +4という古いオプションの扱いはPOSIXのバージョンによるってことかな
https://www.gnu.org/software/coreutils/manual/html_node/Standards-conformance.html#Standards-conformance
2015/02/03(火)03:09:11.93.net
296名無しさん@お腹いっぱい。 [sage]
$ ls -l --sort=size
or
$ ls -lS
でええじゃまいか
2015/02/03(火)06:48:02.67.net
297名無しさん@お腹いっぱい。 [sage]
http://linuxjm.sourceforge.jp/info/GNU_coreutils/coreutils-ja.html
http://linuxjm.sourceforge.jp/info/GNU_coreutils/coreutils-ja_15.html#Standards-conformance
2015/02/03(火)08:37:05.99.net
298確認不足だった orz [sage]
( 検索結果で上位に上がると期待して ) 日本語訳を貼り付けておきます
http://linuxjm.sourceforge.jp/info/GNU_coreutils/coreutils-ja_15.html#Standards-conformance
http://linuxjm.sourceforge.jp/info/GNU_coreutils/coreutils-ja_43.html#sort-invocation
2015/02/03(火)08:40:20.78.net
299名無しさん@お腹いっぱい。 [sage]
2015/02/04(水)22:55:20.92.net
300名無しさん@お腹いっぱい。 [sage]
何か簡単に管理する方法がありませんかね?
2015/02/08(日)15:04:24.54.net
301名無しさん@お腹いっぱい。 [sage]
vimのUnite historyの様なgrep効くから、それで呼ぶか
編集して完成させる
2015/02/08(日)15:06:57.37.net
302名無しさん@お腹いっぱい。 [sage]
2015/02/08(日)16:40:17.45.net
303名無しさん@お腹いっぱい。 [sage]
aliasじゃないの?
2015/02/09(月)09:34:08.43.net
304名無しさん@お腹いっぱい。 [sage]
2015/02/09(月)10:04:38.99.net
305名無しさん@お腹いっぱい。 [sage]
ぼくの書いたスクリプトが動かないなんてけしからん(´・ω・`)
シェルの方を治したまえ
2015/02/09(月)18:00:27.27.net
306名無しさん@お腹いっぱい。 [sage]
declare -A URL
URL=(
["Vim_part24"]="peace.2ch.net;
)
# ping for download
ping_error=0
for i in ${!URL[@]}
do
# ping ${URL[$i]} > /dev/null
ping -n 1 `echo ${URL[$i]} | awk -F"/" '/http/{print }'` > /dev/null
if [ "$?" -ne 0 ]; then
echo "${i} : can not contact ${URL[$i]}"
ping_error=1
fi
done
2015/02/09(月)18:21:02.80.net
307名無しさん@お腹いっぱい。 [sage]
pingのコマンドオプションって統一されてないよなぁ
2015/02/09(月)18:41:13.94.net
308名無しさん@お腹いっぱい。 [sage]
#!/bin/sh
url_list='
Vim_part24 peace.2ch.net
'
ping="ping -w 3 -c 1"
echo "$url_list" | while read thr url __; do
case "$url" in
https?://*)
host=`echo $url | cut -d/ -f3`
if ! $ping $host >/dev/null; then
echo "$thr: cannot contact $url"
err=1
fi
;;
esac
done
exit $err
2015/02/09(月)19:27:08.45.net
309名無しさん@お腹いっぱい。 [sage]
2015/02/09(月)19:28:49.19.net
310名無しさん@お腹いっぱい。 [sage]
2015/02/09(月)19:33:01.27.net
311名無しさん@お腹いっぱい。 [sage]
2015/02/09(月)19:34:49.22.net
312名無しさん@お腹いっぱい。 [sage]
これって、どこかに由来する文化なのかな?
(cronを「くーろん」と呼ぶみたいな?いや、これは違うかな……)
2015/02/09(月)19:39:42.45.net
313名無しさん@お腹いっぱい。 [sage]
サンキュー
windowsのsystem32/ping.exeが呼ばれてた
そりゃ移植性がないわけだ
>>308-309
コードありがとう
>>311
-Tオプションなんてあったのか
>>310
pingで鯖落ちてないか検査した後w3mで複数のURLから取ってきて
スレの上下の不要な広告など取り除いてから git commit して
その差分見るから
全部安全に通信できるか見てからやらないと、差分の時にちょっと問題になる
通信できなかったスレがマイナス差分で大量表示されたり、
次回は大量追加されたり
git reset hard HEAD~ するぐらいならあらかじめ通信検査してからやろうと思った
2015/02/09(月)19:43:34.71.net
314名無しさん@お腹いっぱい。 [sage]
それもあるし、どれかひとつでもエラーでping_error=1だからサーバの状態を確認してる感じがしない
2015/02/09(月)19:45:19.02.net
315名無しさん@お腹いっぱい。 [sage]
echo ... | {
while read ... do
...
done
exit $err
}
2015/02/09(月)19:47:43.57.net
316名無しさん@お腹いっぱい。 [sage]
> -Tオプションなんてあったのか
通信系のコマンドで、タイムアウトが指定できないものはスクリプトからは利用しないとか、
そういうことは考えないで作っちゃうタイプの方ですか?
ちなみに、大抵の通信系コマンドはタイムアウトが指定できるような気がする。
2015/02/09(月)20:32:51.35.net
317名無しさん@お腹いっぱい。 [sage]
2015/02/09(月)20:46:31.70.net
318名無しさん@お腹いっぱい。 [sage]
2015/02/09(月)21:22:03.82.net
319名無しさん@お腹いっぱい。 [sage]
いろいろやり方はあるだろうけど、自分の場合は
libwww-perl(debian系)に入ってるHEADコマンドで.datファイルのLast-Modifiedフィールドみたいなのを見てる
2015/02/09(月)22:07:20.56.net
320名無しさん@お腹いっぱい。 [sage]
ここに書いてる奴本人じゃね?w
2015/02/10(火)06:45:24.43.net
321名無しさん@お腹いっぱい。 [sage]
2015/02/10(火)06:59:04.70.net
322名無しさん@お腹いっぱい。 [sage]
ダイヤルアップとかで最初の接続に時間がかかるから ping でネットワーク接続してから、おもむろに目的のアプリケーションで接続するって言うのがあったような気がする
2015/02/10(火)07:03:40.32.net
323名無しさん@お腹いっぱい。 [sage]
ping打っているかどうか確認してるんじゃ?
>>322
ちょっと違うけど自動切断有効にしてて切れてほしくないときに
ping打ちっぱなしにしてたな
2015/02/10(火)10:03:19.02.net
324名無しさん@お腹いっぱい。 [sage]
2015/02/10(火)10:06:07.01.net
325名無しさん@お腹いっぱい。 [sage]
2015/02/10(火)10:12:53.45.net
326名無しさん@お腹いっぱい。 [sage]
切り分けといっても、pingが成功したらネットワーク的に問題ないとは言えないわけで……
対話環境で作業している時だったら、お手軽だから「まずping打ってみるか」というのは
分かる気がするけど、スクリプトの場合では中途半端なように思えます。
「ICMPは通るね」というのをスクリプト中から確認できても、それほど嬉しくはないよね?
2015/02/10(火)10:32:51.28.net
327名無しさん@お腹いっぱい。 [sage]
正しい汚染チェックってどうするべきなんだろう?
2015/02/10(火)10:41:38.26.net
328名無しさん@お腹いっぱい。 [sage]
ネットワークよりむしろ、ローカル的な問題がない事が確認できるんじゃないかな?
2015/02/10(火)11:00:13.65.net
329名無しさん@お腹いっぱい。 [sage]
どういうこと?
2015/02/10(火)11:05:04.42.net
330名無しさん@お腹いっぱい。 [sage]
2015/02/10(火)11:07:57.10.net
331名無しさん@お腹いっぱい。 [sage]
2015/02/10(火)11:11:26.56.net
332名無しさん@お腹いっぱい。 [sage]
2015/02/10(火)11:11:41.05.net
333名無しさん@お腹いっぱい。 [sage]
すみません、日本語でお願いします
2015/02/10(火)11:21:02.15.net
334名無しさん@お腹いっぱい。 [sage]
2015/02/10(火)11:23:49.29.net
335名無しさん@お腹いっぱい。 [sage]
2015/02/10(火)11:41:25.85.net
336名無しさん@お腹いっぱい。 [sage]
2015/02/10(火)11:43:10.44.net
337名無しさん@お腹いっぱい。 [sage]
URL次第
2015/02/10(火)12:28:31.34.net
338名無しさん@お腹いっぱい。 [sage]
2015/02/10(火)12:55:57.86.net
339名無しさん@お腹いっぱい。 [sage]
差分は専ブラで取得です^^;
2015/02/10(火)13:20:41.45.net
340名無しさん@お腹いっぱい。 [sage]
差分なんて git 以外にも diff や vimdiff 等あるからやってみたら?
2015/02/10(火)13:36:06.53.net
341名無しさん@お腹いっぱい。 [sage]
2015/02/10(火)14:15:44.40.net
342名無しさん@お腹いっぱい。 [sage]
alias も出たから、ついでに...
自分は ${HOME}/bin に、スクリプトとして書いているが、場所はどこでもいいから
どこかにまとめて保存しておけばいいのでは?例えば、~/bin/oneliner/ 等
それらのファイルは、grep で検索も出来るし、それで見つかった script を編集するなら
history -r script で履歴に読み込んで、コマンドライン上で編集が出来る
(あと、あんまり使わないけど) bash zsh で、Ctrl-x Ctrl-e で editor を呼び出して
読み込んで実行とか
2015/02/10(火)19:43:43.25.net
343名無しさん@お腹いっぱい。 [sage]
2015/02/10(火)22:45:11.06.net
344名無しさん@お腹いっぱい。 [sage]
>>343
スクリプトファイルから履歴に読み込むと、行毎に履歴の最後に追加されるから
previous-history Ctrl-p (もしくは↑)で十分だけどね
2015/02/10(火)23:29:41.64.net
345名無しさん@お腹いっぱい。 [sage]
!n:gs/string1/string2/
!-n
等 bash で履歴を利用するものは shopt -s histverify すれば確認・編集が出来て便利だよね
2015/02/14(土)04:53:42.98.net
346名無しさん@お腹いっぱい。 [sage]
どうなっちゃうの、2ちゃん?
なんか、ツイッターとかFBみたくなるのか?
極端に利用者減ると思うけどな。
1 :ニライカナイφ ★ 転載ダメ©2ch.net:2015/02/16(月) 16:24:24.83 ID:???*
◆2ちゃんねるがdatを近日廃止、さらにウェブスクレイピングを用いた専用ブラウザ開発・
公開は禁止して2015年3月3日以降はAPI経由の許諾制に
「2015/3/3以降、2ch.net専用ブラウザ(以下「専用ブラウザ」)を開発、
公開するには、2ch.netの所有者であるRaceQueen社の許諾を得て、
2ch.netが提供するAPI(以下「API」)を用いて開発する必要があります」
daily.2ch.net
2015/02/16(月)18:20:07.18.net
347名無しさん@お腹いっぱい。 [sage]
テキスト広告除去
w3m some_2ch_URL |sed '1,/^$/d'|sed -e '/^━━━*$/,$d'|sed '$d'
例えば
w3m peace.2ch.net |sed '1,/^$/d'|sed -e '/^━━━*$/,$d'|sed '$d'
2015/02/16(月)18:27:38.42.net
348名無しさん@お腹いっぱい。 [sage]
2015/02/16(月)18:50:00.38.net
349名無しさん@お腹いっぱい。 [sage]
2015/02/16(月)19:15:37.65.net
350名無しさん@お腹いっぱい。 [sage]
hayabusa6.2ch.net
2015/02/21(土)14:32:41.68.net
351名無しさん@お腹いっぱい。 [sage]
あるテキストの中に含まれる、特定のキャラクタの数を数え
たいのですが、すごく簡単にできそうで、わからなくて
悩んでおります。grepでもwcでもできそうで、できません。
ご教授お願いします。
2015/02/24(火)13:40:24.51.net
352名無しさん@お腹いっぱい。 [sage]
2015/02/24(火)14:17:32.87.net
353名無しさん@お腹いっぱい。 [sage]
2015/02/24(火)14:32:17.30.net
354名無しさん@お腹いっぱい。 [sage]
全キャラの後ろ(要するに1文字ごと)に改行は必要なくて
数えたいワード単位に改行入れて(sed)、grep、wcだね
sedあまり好きじゃないからperlならこう
perl -pe ’s/foo/foo¥n/g’ file | grep foo | wc -l
スクリプトにしてfooを引数にすりゃ汎用的に使える
2015/02/24(火)14:40:49.91.net
355名無しさん@お腹いっぱい。 [sage]
2015/02/24(火)17:15:08.03.net
356名無しさん@お腹いっぱい。 [sage]
grep -o foo | wc -l
351とか353とか無駄すぎ。
353は1行に1回しかマッチしないことが保証できるので grep | wc ではなく、grep -c でよい。
2015/02/24(火)17:53:14.61.net
357名無しさん@お腹いっぱい。 [sage]
意気込んで帰宅してスレ開いたら>>356に書かれていたでござる
2015/02/24(火)19:23:17.83.net
358名無しさん@お腹いっぱい。 [sag]
2015/02/24(火)19:55:49.20.net
359名無しさん@お腹いっぱい。 [sage]
2015/02/24(火)20:01:41.72.net
360名無しさん@お腹いっぱい。 [sage]
2015/02/24(火)20:07:04.10.net
361名無しさん@お腹いっぱい。 [sage]
2015/02/24(火)21:34:48.78.net
362名無しさん@お腹いっぱい。 [sage]
2015/02/24(火)22:11:45.11.net
363名無しさん@お腹いっぱい。 [sage]
身に染みてきた。VBSを仕事でやってるが、何せ長い。シェルスクリプトだと数十行で済むようなことが
何千行とかになってしまう。
Unixのコマンド自体がワンライナーで済んでしまうことも多いが、
シェルスクリプトや正規表現、Unixのアプリを組み合わせて20行、30行もかけば
かなりの処理ができるな。
ただし、VBSのすごいところは、GUIまでわりと自由に操作できることだな。
UnixもWindowsもそれなりに何かすばらしさを感じる。
2015/02/24(火)22:42:20.20.net
364名無しさん@お腹いっぱい。 [sage]
マッチ部分が重複するケースもあると思うけど
そういう時はどう書けばいいんだろ
$ echo ABC | grep -Po '..'
AB
$ echo ABC | grep -Po '.(?=.)'
A
B
$ echo ABC | ?
AB
BC
が欲しい
2015/02/24(火)22:43:45.95.net
365名無しさん@お腹いっぱい。 [sage]
2015/02/24(火)22:45:35.14.net
366名無しさん@お腹いっぱい。 [sage]
2015/02/24(火)23:11:13.94.net
367名無しさん@お腹いっぱい。 [sage]
お前は4時間以上かけてそんな回答しかできないのか
2015/02/25(水)10:15:56.15.net
368名無しさん@お腹いっぱい。 [sage]
2015/02/25(水)10:36:23.41.net
369名無しさん@お腹いっぱい。 [sage]
ところで、あるテキストや特定のキャラクタは utf-8 であると考える必要性は有りや無しや。
神に問う。信頼は罪なりや。 果たして、無垢の信頼心は、罪の源泉なりや。'
echo "$str" | grep -o . | LC_COLLATE=C sort | uniq -c
echo "$str" | perl -0777 -ne 'print s/。//g,"\n"'
2015/02/25(水)21:30:04.01.net
370名無しさん@お腹いっぱい。 [sage]
2015/02/25(水)22:36:30.27.net
371名無しさん@お腹いっぱい。 [sage]
2015/02/25(水)22:47:56.06.net
372名無しさん@お腹いっぱい。 [sage]
ネタは不評だったけど、最後かもしれないし >>364 にも答えておこう。
perl と ruby で
#!/bin/sh
echo '商工会議所長' |
perl -ne 'while( /(?=(会議所|所長))/g ){ print , "\n"; }'
echo '商工会議所長' |
ruby -Ku -ne 'puts $_.scan( /(?=(会議所|所長))/ ).join( "\n" )'
2015/03/02(月)23:05:19.70.net
373名無しさん@お腹いっぱい。 [sage]
2015/03/02(月)23:11:47.85.net
374名無しさん@お腹いっぱい。 [sage]
何がなんだか…w
2015/03/03(火)03:08:17.32.net
375名無しさん@お腹いっぱい。
2015/03/03(火)08:07:50.39.net
376名無しさん@お腹いっぱい。
AB
BC
じゃまずいのかな。
2015/03/03(火)17:30:06.70.net
377371 [sage]
>>375 に対しての発言の様にも取れるけど、>>372 に対しての発言ならば...
それも試した上で、書いてる
無反応だったけど >>369 で utf-8 である事を考えていないものが有る事を指摘したので
引き続き、>>364 のお題
> 単語単位だとマッチ部分が重複するケース
に沿って、日本語に入れ替えただけ
2015/03/04(水)06:55:50.72.net
378名無しさん@お腹いっぱい。 [sage]
所長と会議所限定じゃなく
2015/03/04(水)13:23:38.19.net
379363 [sage]
2015/03/04(水)22:12:28.21.net
380名無しさん@お腹いっぱい。 [sage]
みんなどんな時も/bin/sh縛りなの(´・ω・`)?
それとも割と躊躇なく、bashとかzsh使うの(´・ω・`)?
使う人はどういう線引きで/bin/shと高機能シェルを使い分けてるの(´・ω・`)?
2015/03/04(水)22:57:35.29.net
381名無しさん@お腹いっぱい。 [sage]
2015/03/04(水)23:04:13.67.net
382371 [sage]
wikipedia で LL言語を見ると、awk も AUTO だけど、sed は入っていなかったので
sed を使って無理やり書いてみよう
.*? が使えないので .. みたいな正規表現への対応は思いつけなかったけど、単語を抜き出すだけならこれで
#!/bin/sh
re1=${1:-会議所\|所長}
str=$re1
while
re2=$re2$( echo "$str" | sed -e 's/^\(.\).*//' )
length=${#str}
str=${str#*|}
[ "${#str}" -ne "$length" ]
do
:
done
# ここから
sed -ne '
: loop
/'"$re1"'/ {
s/^[^'"$re2"']*\('"$re1"'\)/\n/
P
s/^.\(.*\)\n//
b loop
}
'
2015/03/06(金)06:31:41.84.net
383名無しさん@お腹いっぱい。 [sage]
#!/bin/bash
re1=${1:-会議所\|所長}
str=$re1
while
re2=$re2${str:0:1}
length=${#str}
str=${str#*|}
[ "${#str}" -ne "$length" ]
do
:
done
while
IFS= read -r line
do
while
[[ "$line" =~ ^[^${re2}]*((${re1}).*) ]]
do
echo "${BASH_REMATCH[2]}"
line=${BASH_REMATCH[1]}
line=${line#?}
done
done
2015/03/06(金)06:33:59.92.net
384名無しさん@お腹いっぱい。 [sage]
$ echo 'abc' | ./testsed 'ab\|bc'
ab
bc
$ echo 'abc' | ./testbash 'a.|b.'
ab
bc
2015/03/06(金)06:36:18.16.net
385371 [sage]
全般的に変数代入の箇所のクォート
var="var"
と
#!/bin/bash
re1="${1:-会議所|所長} "
2015/03/06(金)07:34:31.86.net
386名無しさん@お腹いっぱい。 [sage]
2015/03/06(金)08:05:27.13.net
387名無しさん@お腹いっぱい。 [sage]
2015/03/06(金)09:15:28.00.net
388名無しさん@お腹いっぱい。 [sage]
2015/03/08(日)00:18:10.47.net
389名無しさん@お腹いっぱい。 [sage]
でも実際は変な癖がそれぞれついてるんで、あまり役に立たない。
2015/03/08(日)03:45:15.37.net
390名無しさん@お腹いっぱい。 [sage]
2015/03/08(日)05:35:53.00.net
391名無しさん@お腹いっぱい。 [sage]
bashが/bin/にない環境もあるで
2015/03/08(日)05:57:27.23.net
392名無しさん@お腹いっぱい。 [sage]
2015/03/08(日)07:00:32.87.net
393名無しさん@お腹いっぱい。 [sage]
#!/sbin/busybox sh
と書くこと。
2015/03/08(日)08:29:58.08.net
394名無しさん@お腹いっぱい。 [sage]
2015/03/09(月)01:03:57.32.net
395前スレ119 [sage]
さて、プレーンテキスト中の
hoge_01_bar.pdf
hoge_01_foo.pdf
hoge_02_bar.pdf
hoge_02_foo.pdf
。。。
hoge_58_foo.pdf
hoge_59_bar.pdf
hoge_59_foo.pdf
hoge_60_bar.pdf
hoge_60_foo.pdf
を
hoge_{01..60}_bar.pdf
hoge_{01..60}_foo.pdf
に置換したいのですがどうすればできますか?
よろしくお願いします。
2015/03/11(水)18:57:08.87.net
396前スレ119 [sage]
同じtree.txt中に混在している状況です。
数字の部分も
01_{01..07} #(実際は7行ある)、
...
04_{01..04} #(これも4行ある)
になっているブロックもあったりしてかなりヤヤコシイのですが、
[(連番になっている数字)以外のところが同じ行]を検出して数字を{}でまとめたい感じです。
3000行あって手作業は泣きそうなので、エレガントな方法をご教授いただければ幸いです。
{01..04}_{01..07}とする必要は無いです。
よろしくお願いします。
2015/03/11(水)19:13:00.82.net
397名無しさん@お腹いっぱい。 [sage]
2015/03/11(水)19:16:18.16.net
398名無しさん@お腹いっぱい。 [sage]
2015/03/11(水)19:54:30.56.net
399名無しさん@お腹いっぱい。 [sage]
何で書くの(´・ω・`)?
2015/03/11(水)20:19:19.48.net
400名無しさん@お腹いっぱい。 [sage]
2015/03/11(水)20:27:02.77.net
401名無しさん@お腹いっぱい。 [sage]
ご自分が言っているように、まず
>[(連番になっている数字)以外のところが同じ行]を検出して
これをする。たとえば次のように
sed -e 's/_[0-9][0-9]_/_%%_/' tree.txt | sort | uniq
これで「連番になっている数字以外のところが同じ行」をパターン化できる
そしたら、そのそれぞれのパターンで grep tree.txt して、sort -n し、
head -n 1 と tail -n 1 で連番の最初と最後の値を切り出す
こんな感じで行けないかな
2015/03/11(水)20:48:55.55.net
402名無しさん@お腹いっぱい。 [sage]
2015/03/11(水)20:58:26.70.net
403名無しさん@お腹いっぱい。 [sage]
問題が全然理解出来ない
誰か問題を解説してくれ
2015/03/11(水)23:14:35.24.net
404名無しさん@お腹いっぱい。 [sage]
日本の植民地支配から、
日本が勝手に領有権を主張しだした。
現在は国際的にも韓国領と認識されている。
2015/03/11(水)23:20:28.51.net
405名無しさん@お腹いっぱい。 [sage]
2015/03/11(水)23:54:15.14.net
406名無しさん@お腹いっぱい。 [sage]
2015/03/12(木)00:03:26.06.net
407名無しさん@お腹いっぱい。 [sage]
やつらの主張の誤りは、独島=竹島だと言張ってるところ。
独島は竹島だとは別の島だよ。
2015/03/12(木)01:56:20.20.net
408名無しさん@お腹いっぱい。 [sage]
2015/03/12(木)02:02:58.54.net
409名無しさん@お腹いっぱい。 [sage]
Bashのブレース展開の逆がやりたいってことかと
2015/03/12(木)02:46:00.10.net
410名無しさん@お腹いっぱい。 [sage]
http://search.cpan.org/~vvu/Compress-BraceExpansion-0.1.7/lib/Compress/BraceExpansion.pm
てのがあった
このままじゃ使いものにならんけどね
2015/03/12(木)03:03:37.86.net
411名無しさん@お腹いっぱい。 [sage]
テキストファイルを検索して見つけた行数を取得したいときって
grep -nで行数出力させて取得するのが一番シンプルかな?
マッチする最終行にしたい場合はtailと組み合わせてさ
ちなみにシェル知らなかったころってreadで1行ずつ読み込んで判断してたw
2015/03/12(木)16:01:30.66.net
412名無しさん@お腹いっぱい。 [sage]
2015/03/12(木)16:32:34.70.net
413名無しさん@お腹いっぱい。 [sage]
grep -c
2015/03/12(木)18:00:51.55.net
414名無しさん@お腹いっぱい。 [sage]
オマエいつも問題の意味取り違えて回答して点数もらえないタイプだろw
2015/03/12(木)18:40:40.82.net
415名無しさん@お腹いっぱい。 [sage]
2015/03/12(木)20:35:27.12.net
416名無しさん@お腹いっぱい。 [sage]
2015/03/12(木)20:36:26.22.net
417名無しさん@お腹いっぱい。 [sage]
まだわかってないのか…重症?
2015/03/12(木)20:36:37.62.net
418名無しさん@お腹いっぱい。 [sage]
2015/03/12(木)21:26:36.04.net
419名無しさん@お腹いっぱい。 [sage]
オプションなしだと複数返すコマンドだよね
2015/03/12(木)22:07:04.23.net
420名無しさん@お腹いっぱい。 [sage]
日本語に不自由してるのぅ
2015/03/13(金)00:23:15.74.net
421名無しさん@お腹いっぱい。 [sage]
2015/03/13(金)01:03:30.38.net
422名無しさん@お腹いっぱい。 [sage]
>grep -nで行数出力させて取得するのが一番シンプルかな?
>マッチする最終行にしたい場合はtailと組み合わせてさ
これから察するに、行数と書いてはいるが、実際は行数じゃなくて行番号のこと言ってるんじゃないの?
マッチした行数が知りたいなら最終行の話なんて出てこないだろ
つまり本当にバカなのは>>417と推測
まぁ質問主から続きがなければ有耶無耶だが
2015/03/13(金)01:16:54.86.net
423421 [sage]
すまん眠かったってことで何も見なかったことにしてくれ……死ぬ……
2015/03/13(金)01:17:57.58.net
424名無しさん@お腹いっぱい。 [sage]
2015/03/13(金)04:43:04.00.net
425名無しさん@お腹いっぱい。 [sage]
2015/03/13(金)07:28:39.51.net
426名無しさん@お腹いっぱい。 [sage]
natural number = 自然数
complex number = 複素数
number = 数
2015/03/13(金)07:40:15.74.net
427名無しさん@お腹いっぱい。 [sage]
ちがう。
2015/03/13(金)08:04:07.16.net
428名無しさん@お腹いっぱい。 [sage]
2015/03/13(金)08:20:54.53.net
429名無しさん@お腹いっぱい。 [sage]
2015/03/13(金)11:04:35.04.net
430名無しさん@お腹いっぱい。 [sage]
2015/03/13(金)13:12:27.06.net
431名無しさん@お腹いっぱい。 [sage]
2015/03/13(金)17:11:36.57.net
432名無しさん@お腹いっぱい。 [sage]
Fランもたいがいにせいよ
2015/03/14(土)01:06:12.05.net
433名無しさん@お腹いっぱい。 [sage]
まあgrepでいいと思う
grep -n regexp FILE | tail -n1 | cut -d: -f1
awk /regexp/'{print NR}' FILE | tail -n1
sed -n /regexp/= FILE | tail -n1
2015/03/14(土)02:26:16.92.net
434名無しさん@お腹いっぱい。 [sage]
行数は line count (だからこそ grep -c )
2015/03/14(土)04:57:44.74.net
435名無しさん@お腹いっぱい。 [sage]
てかどーでもいいよ
行数にしろ行番号にしろ質問者が具体例を明示してる時点で誤解しようがないだろ
早がってんしたエスパースキルゼロのうっかりさんが
早漏の言い訳をぐだぐだぐだぐだぐだぐだぐだぐだぐだぐだ
くだらねー
2015/03/14(土)05:17:25.87.net
436名無しさん@お腹いっぱい。
中卒もたいがいにしとけ
2015/03/14(土)05:44:10.73.net
437名無しさん@お腹いっぱい。 [sage]
countは動詞だけじゃなく名詞にもなるんだよ、知らなかった?
2015/03/14(土)07:03:54.77.net
438名無しさん@お腹いっぱい。 [sage]
2015/03/14(土)08:50:28.21.net
439名無しさん@お腹いっぱい。 [sage]
名詞が連続してるが、それはどう言い訳するんだ?
2015/03/14(土)18:41:01.09.net
440名無しさん@お腹いっぱい。 [sage]
-c
--count
Suppress normal output; instead print a count of matching lines for each input file. With the -v (--invert-match) option, count non-matching lines. (-c is specified by POSIX.)
2015/03/14(土)21:16:03.47.net
441名無しさん@お腹いっぱい。 [sage]
bbbbaaa124iiiiiccccaaaa456lllllddddaaa789と書いてあった場合に、
特定の文字列の後に続いている数字を、スペース空けて抜き出す書き方はないでしょうか
うえの場合だとaaaの後にあるものを抜き出すように、124 456 789のような・・
素人質問ですいませんがよろしくお願いします
2015/03/15(日)00:27:31.56.net
442名無しさん@お腹いっぱい。 [sage]
$ echo "bbbbaaa124iiiiiccccaaaa456lllllddddaaa789" | grep -Po '(?!aaa)[[:digit:]]+' | tr '\n' ' '
2015/03/15(日)01:12:54.15.net
443名無しさん@お腹いっぱい。 [sage]
2015/03/15(日)02:09:05.45.net
444名無しさん@お腹いっぱい。 [sage]
上の例でbbbbaaa124iiiiicccc222aaaa456lllllddddaaa789とあった場合に、
aaaの直後でない222は省いて124 456 789だけ方法はないでしょうか
何度もすいません
2015/03/15(日)03:20:18.84.net
445名無しさん@お腹いっぱい。 [sage]
2015/03/15(日)03:27:09.47.net
446名無しさん@お腹いっぱい。 [sage]
2015/03/15(日)03:50:51.90.net
447名無しさん@お腹いっぱい。 [sage]
上の例で、bbbbaaa0.24iiiiicccc2.22aaaa456lllllddddaaa7.89 など
小数点も含む数字が混じっている場合に、同様の条件で0.24 456 7.9を抜き出す方法はないでしょうか
あまりにも聞きすぎなので最後にしようと思います。
2015/03/15(日)13:29:40.91.net
448名無しさん@お腹いっぱい。 [sag]
grep -Po '(?<=aaa)\d+(\.\d+)?
でもこれだと、".01" とかにはマッチしないけどね。
それと、"1.2.3" なんて文字列があると、"1.2" にマッチしちゃう。
2015/03/15(日)14:11:57.45.net
449名無しさん@お腹いっぱい。 [sage]
過去2回の答えがなぜそうなるのかを考えれば応用でいけるはずだ
2015/03/15(日)14:12:54.78.net
450名無しさん@お腹いっぱい。 [sage]
2015/03/15(日)14:15:07.46.net
451名無しさん@お腹いっぱい。 [sage]
grep -o 'aaa[0-9\.][0-9\.]*' | sed 's/aaa//g' | tr '\n' ' '
2015/03/15(日)14:16:19.36.net
452名無しさん@お腹いっぱい。 [sage]
2015/03/15(日)14:37:30.13.net
453名無しさん@お腹いっぱい。 [sage]
>>450
>>451
再度ありがとうございました。
私のファイルのケースですと450さんのやり方で完全にできました!
大変助かりましたし、勉強になりました。ありがとうございました。
>>449
本当そうしようと思います。
それ以前にgrepやsedは簡単な文字抜き出しぐらいにしか使ったことがなかったのですが、
こんなに便利だとは驚きました。学習して次は自分で解決できるようにしたいと思います
2015/03/15(日)14:52:31.67.net
454448 [sage]
2015/03/15(日)14:55:28.70.net
455名無しさん@お腹いっぱい。 [sage]
投稿した後でレス確認しました。すいません。
こちらのやり方でもできました!ありがとうございました。
書き方の意味を勉強してみたいと思います。
>>454
ありがとうございます。perlも知らないので、
教えていただいたオプションの意味も含めて調べてみようと思います。
2015/03/15(日)15:09:05.03.net
456395 [sage]
なんとか出来ました!ありがとうございました!
sed -e 's/_[0-9][0-9]_/_%%_/' tree.txt | uniq #sortするとls -Rの構造が崩れる
awk '!a[]++' tree.txt #fooとbarが交互になっている行をuniq
uniq tree.txt #空行(改行?)が全部消えてまう
sed -i "/:$/i \n" tree.txt #?わからん しっぽが:の行の前に空行を挿入
sed "/:$/i \n" tree.txt #?
sed -e "s/^n//" tree.txt #なんとかできた。あとは%%を数字に戻すのだけ手打ちでがんばる
2015/03/16(月)22:22:07.74(iYLKElrbV)
457395 [sage]
何とか出来ました!ありがとうございました!
sed -e 's/_[0-9][0-9]_/_%%_/' tree.txt | uniq #sortするとls -Rの構造が崩れる
awk '!a[]++' tree.txt #fooとbarが交互になっている行をuniq
uniq tree.txt #空行(改行?)が全部消えてまう
sed -i "/:$/i \n" tree.txt #?わからん しっぽが:の行の前に空行を挿入
sed "/:$/i \n" tree.txt #?
sed -e "s/^n//" tree.txt #なんとかできた。あとは%%を数字に戻すのだけ手打ちでがんばる
2015/03/16(月)22:22:55.63(iYLKElrbV)
458395 [sage]
2015/03/16(月)22:24:14.07(iYLKElrbV)
459名無しさん@お腹いっぱい。 [sage]
2015/03/25(水)06:56:05.87.net
460名無しさん@お腹いっぱい。 [sage]
専用コマンドってのは、gpg とか openssl みたいなのを指してるの?
python とか perl とかを使っていいのならライブラリ次第で何とでもなりそうだけど、
それも NG なのかな?
2015/03/25(水)12:51:41.84.net
461名無しさん@お腹いっぱい。 [sage]
tr A-Za-z N-ZA-Mn-za-m
2015/03/25(水)15:07:14.94.net
462名無しさん@お腹いっぱい。 [sage]
2015/03/25(水)18:11:12.12.net
463名無しさん@お腹いっぱい。 [sage]
何かおすすめの本ないですか?
2015/03/27(金)22:26:36.44.net
464名無しさん@お腹いっぱい。 [sage]
2015/03/28(土)00:47:40.73.net
465名無しさん@お腹いっぱい。 [sage]
1234567890
なら
123456780
12345
なら
1235
になるような。
2015/03/28(土)11:31:55.66.net
466名無しさん@お腹いっぱい。 [sage]
nawkのsubstrでできない
2015/03/28(土)14:11:41.06(gf0XqcquF)
467名無しさん@お腹いっぱい。 [sage]
rev, cut -c, head -c, tail -c などでいけるのでは?
$ echo 12345 | rev | cut -c1,3- | rev
>1235
$ echo 1234567890 | rev | cut -c1,3- | rev
>123456780
2015/03/28(土)15:17:24.35(shU+BQtVu)
468名無しさん@お腹いっぱい。 [sage]
後ろから2文字目なら
echo 12345 | sed -e 's/.\(.\{1\}\)$//'
1235
2015/03/28(土)14:36:27.39.net
469名無しさん@お腹いっぱい。 [sage]
LL言語呼び出すにしても拡張ライブラリの専用コマンドに依存するのはNGじゃない?
nkfでrot13読むのは専用コマンドとは言えない気がするけど>>462だよなあ。
バイナリ法辺りを実装すればとりあえずなんとかなるんだろうか?
2015/03/28(土)15:15:24.11.net
470名無しさん@お腹いっぱい。 [sage]
rev, cut -c, head -c, tail -c などでいけるのでは?
$ echo 12345 | rev | cut -c1,3- | rev
1235
$ echo 1234567890 | rev | cut -c1,3- | rev
123456780
2015/03/28(土)15:18:54.26.net
471名無しさん@お腹いっぱい。 [sage]
2015/03/29(日)05:16:26.01.net
472名無しさん@お腹いっぱい。 [sage]
それ、n文字目と言うのが $n 変数に入ってる場合のこと聞いてるんでは? 固定数値ならいろいろ方法あるよ。
2015/03/29(日)08:10:35.43.net
473名無しさん@お腹いっぱい。 [sage]
可変でも同じことはできるけど。
a=1234567890; n=4; f(){ r=; while [ ${#r} != ]; do eval r=${r?}; done; echo $r; }; echo $(f $a $((${#a} - $n)) %)$(f $a $(($n - 1)) \#);
2015/03/29(日)13:30:23.41.net
474名無しさん@お腹いっぱい。 [sage]
2015/03/29(日)13:51:13.01.net
475名無しさん@お腹いっぱい。 [sage]
2015/03/29(日)14:10:10.11.net
476名無しさん@お腹いっぱい。 [sage]
範囲チェックはしていない
ncut () {
declare str=""
declare -i idx=""
declare -i len=$(expr length "$str")
echo $str | cut --complement -b$((len - idx + 1))
}
$ ncut 1234567890 2
123456780
$ ncut 12345 2
ncut 12345 2
2015/03/29(日)14:39:04.14.net
477名無しさん@お腹いっぱい。 [sage]
おっと、s/delcare/local/ でお願い
2015/03/29(日)14:40:32.78.net
478名無しさん@お腹いっぱい。 [sage]
2015/04/06(月)20:37:17.61.net
479名無しさん@お腹いっぱい。 [sage]
xyzかきくけこabc
というファイルがあったときに
あいうえお
かきくけこ
と抜き出す方法にはどうすればよいでしょうか
grepなどを使うとおもったのですがうまくいきません。
よろしければご教示おねがいします
2015/04/06(月)23:05:32.98.net
480名無しさん@お腹いっぱい。 [sage]
lsのオプション弄ってパイプでsedに繋げばいい
変更ならrename使おう
2015/04/07(火)01:08:35.80.net
481名無しさん@お腹いっぱい。 [sage]
2015/04/07(火)01:19:37.06.net
482名無しさん@お腹いっぱい。
親ディレクトリ
/小ディレクトリA/photo/
/小ディレクトリB/photo/
/小ディレクトリC/photo/
みたいなディレクトリ構造があった時photo3つをpictureに
変更するにはどうすればよいのでしょうか
for文にmv入れ込めばできると思ったのですができませんでした
初歩的な質もう申し訳ありませんがよろしくお願いします。
2015/04/07(火)23:44:39.59.net
483名無しさん@お腹いっぱい。 [sage]
2015/04/07(火)23:56:55.05.net
484名無しさん@お腹いっぱい。
なんとか自己解決しましたそして>>483有難う
2015/04/08(水)00:23:18.58.net
485名無しさん@お腹いっぱい。
for i in *; do cd $i; mv photo picture; cd ..;done
こうだ!!一つしか変わってなかったぜ
2015/04/08(水)00:30:06.79.net
486名無しさん@お腹いっぱい。 [sage]
for i in *; do mv "$i"/photo "$i"/picture; done
ディレクトリ名等にスペースが含まれていてもいいように $i は "$i" としておく。
2015/04/08(水)05:44:31.48.net
487名無しさん@お腹いっぱい。 [sage]
2015/04/09(木)06:55:16.58.net
488名無しさん@お腹いっぱい。 [sage]
2015/04/09(木)08:37:12.98.net
489名無しさん@お腹いっぱい。 [sage]
2015/04/09(木)19:49:27.51.net
490名無しさん@お腹いっぱい。 [sage]
2015/04/09(木)22:21:14.40.net
491名無しさん@お腹いっぱい。 [sage]
http://x68000.q-e-d.net/~68user/unix/pickup?rename
util-linuxのrenameコマンドの場合
rename -v photo picture */photo
Debian系だと正規表現指定、できるかは不明
https://wiki.ubuntulinux.jp/UbuntuTips/FileHandling/RenameCommand
FreeBSDだとsysutils/renameで正規表現指定、できるかは不明
http://www.freshports.org/sysutils/rename/
2015/04/09(木)23:52:38.50.net
492名無しさん@お腹いっぱい。
$> printf ${TIME:5:11}
04/15
$> echo ${TIME:5:11}
04/15 08:25
$> printf "${TIME:5:11}"
04/15 08:25
罠だ、はまった。。。
2015/04/15(水)08:31:50.31.net
493名無しさん@お腹いっぱい。 [sage]
シェル変数の展開時には " " でかこんで "${HOGE...}" にするのが基本。
2015/04/15(水)08:45:36.46.net
494名無しさん@お腹いっぱい。 [sage]
date '+%m/%d %H:%M'
にした方がいいのでは?
2015/04/15(水)08:48:00.87.net
495名無しさん@お腹いっぱい。 [sage]
2015/04/15(水)08:48:10.66.net
496名無しさん@お腹いっぱい。 [sage]
$ printf ${TIME:5:11}
>04/15
$ /usr/bin/printf ${TIME:5:11}
>04/15/usr/bin/printf: warning: ignoring excess arguments, starting with `08:25'
$ type printf
printf is a shell builtin
2015/04/15(水)09:13:38.03(uEYnIocSI)
497名無しさん@お腹いっぱい。 [sage]
$ printf ${TIME:5:11}
04/15
$ /usr/bin/printf ${TIME:5:11}
04/15/usr/bin/printf: warning: ignoring excess arguments, starting with `08:25'
$ type printf
printf is a shell builtin
2015/04/15(水)09:14:12.79.net
498名無しさん@お腹いっぱい。 [sage]
$ printf ${TIME:5:11}
04/15
$ IFS="wanada"
$ printf ${TIME:5:11}
04/15 13:30
2015/04/15(水)13:25:09.88.net
499名無しさん@お腹いっぱい。 [sage]
$ TIME="2015/04/15 08:25:16"
$ printf ${TIME:5:11}
sh: Bad substitution
$ IFS='/ :'
$ set $TIME
$ echo / :
04/15 08:25
2015/04/15(水)13:48:45.04.net
500名無しさん@お腹いっぱい。 [sage]
$ TIME="2015/04/15 08:25:16"
$ date '+%m/%d %H:%M' --date="${TIME}"
04/15 08:25
2015/04/16(木)23:26:24.70.net
501名無しさん@お腹いっぱい。 [sage]
2015/04/30(木)23:24:48.53.net
502名無しさん@お腹いっぱい。
でも、エラー処理に困っています。例えば、ffmpegで作ったファイルが壊れているかどうかわからないのです。
ffmpegはファイルとログを出してくれるのでログの特定の文字(たとえば、bad header、skip)が出てきたときに、
その時のログを書き出し、そのログを使って処理を分岐させることは可能なのでしょうか?
このときffmpegは終了コードは0を返してきました。プログラムによっては終了コード1を返してしてくるものもありました。
2015/05/07(木)20:52:12.51.net
503名無しさん@お腹いっぱい。 [sage]
2015/05/07(木)20:53:06.51.net
504名無しさん@お腹いっぱい。 [sage]
2015/05/07(木)21:54:28.34.net
505名無しさん@お腹いっぱい。
2015/05/08(金)20:35:13.72.net
506名無しさん@お腹いっぱい。 [sage]
2015/05/08(金)22:13:16.56.net
507名無しさん@お腹いっぱい。 [sage]
man見てくれよせめて--helpとかググるとかしろよ
2015/05/08(金)22:36:52.79.net
508名無しさん@お腹いっぱい。 [sage]
書き込みの内容見てる限りは無理だと思うけど
ffmpeg xxxx > xxxx.log 2>&1
cat xxxx.log | grep "bad header"
if [ $? -ne 0 ]
then
# エラー処理
fi
2015/05/09(土)12:39:02.61.net
509名無しさん@お腹いっぱい。 [sage]
2015/05/09(土)12:42:06.41.net
510名無しさん@お腹いっぱい。 [sage]
2015/05/09(土)13:01:23.55.net
511名無しさん@お腹いっぱい。 [sage]
判定が1種類だと思ってるアホ発見
2015/05/09(土)13:11:39.85.net
512名無しさん@お腹いっぱい。 [sage]
二種類あるとどうなるわけ?w
2015/05/09(土)13:25:48.27.net
513名無しさん@お腹いっぱい。 [sage]
2015/05/09(土)13:26:22.67.net
514名無しさん@お腹いっぱい。 [sage]
2015/05/09(土)13:32:28.84.net
515名無しさん@お腹いっぱい。 [sage]
if ! grep "bad header" <xxxx.log
then
# エラー処理
fi
2015/05/09(土)15:56:32.15.net
516名無しさん@お腹いっぱい。 [sage]
fi
2015/05/09(土)18:51:16.11.net
517名無しさん@お腹いっぱい。 [sage]
case $? in 0) echo "Match";; 1) echo "No match";; *) echo "Error";; esac
2015/05/09(土)20:08:36.31.net
518名無しさん@お腹いっぱい。 [sage]
これだと判定のたびにログを全部読み直すから無駄無駄
2015/05/11(月)21:15:37.13.net
519名無しさん@お腹いっぱい。 [sage]
どう直せばいいと思う?
2015/05/11(月)22:56:21.16.net
520名無しさん@お腹いっぱい。
for i in $@
do
command
echo ○○中××番目を処理中です。
done
としたいのですが、○○と××はどうすれば表示できるようになりますか?
2015/05/12(火)18:27:59.13.net
521名無しさん@お腹いっぱい。
for i in $@にカレントディレクトリだけじゃなく
そのサブディレクトリのファイルを送るにはどう書けばよいのですか?
2015/05/12(火)19:54:49.92.net
522名無しさん@お腹いっぱい。 [sage]
2015/05/12(火)19:59:27.57.net
523名無しさん@お腹いっぱい。 [sage]
2015/05/12(火)20:00:20.69.net
524名無しさん@お腹いっぱい。 [sage]
in $@ は無駄だな
2015/05/12(火)20:18:46.18.net
525名無しさん@お腹いっぱい。 [sage]
count=$(($count + 1)) の行自体も無駄とは言わないけどbashなら不要だな。
echo "$#中$(( count++ ))番目を処理中です。"
2015/05/13(水)06:35:40.84.net
526名無しさん@お腹いっぱい。 [sage]
可読性・保守性が悪いから却下
2015/05/13(水)07:02:23.50.net
527名無しさん@お腹いっぱい。 [sage]
2015/05/13(水)07:23:59.83.net
528名無しさん@お腹いっぱい。 [sage]
それだと肝心の $@ の処理ができないじゃん、本末転倒。
2015/05/13(水)07:39:14.30.net
529名無しさん@お腹いっぱい。 [sage]
for ((i=1;i<=$#;i++)); do eval item=${$i};echo "${#}中${i}番目($item)を処理中"; done
2015/05/13(水)08:39:25.96.net
530名無しさん@お腹いっぱい。 [sage]
もしかしてtelnetのような感じの方法になってスマートには無理なのだろうか?
2015/05/13(水)13:58:41.25.net
531名無しさん@お腹いっぱい。 [sage]
2015/05/13(水)17:11:23.00.net
532名無しさん@お腹いっぱい。 [sage]
2015/05/13(水)17:26:02.42.net
533名無しさん@お腹いっぱい。 [sage]
調べればいいのにと思ったのに
実装されてるコードそのものが欲しかったのね
キミのレベルに合わせられなくてごめんね
2015/05/13(水)17:49:35.48.net
534名無しさん@お腹いっぱい。 [sage]
2015/05/13(水)17:52:16.16.net
535名無しさん@お腹いっぱい。
サブディレクトリのほうは無理のでしょうか?
2015/05/13(水)19:45:16.01.net
536名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)01:27:00.37.net
537名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)02:06:32.75.net
538名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)05:00:09.66.net
539名無しさん@お腹いっぱい。 [sage]
IFS=$'\n'
set -- $( find . -type f )
count=0
for i
もしくは、
IFS=$'\n'
fileList="$( find . -type f )"
fileLength=$( echo "$fileList" | wc -l )
count=0
for i in ${fileList}
ところで、v="$( )" のダブルクォートって無駄かな?
2015/05/14(木)06:30:49.15.net
540名無しさん@お腹いっぱい。 [sage]
それより、findでスペース入りファイル名が見つかった場合とかの対応ができてない。
2015/05/14(木)07:13:26.75.net
541名無しさん@お腹いっぱい。 [sage]
for f in * */* */*/* */*/*/*
って書いちゃった方が早いんだよな。どうせ階層は何段階か有限だし、
アスタリスクならスペース入りでも無問題。
2015/05/14(木)07:25:46.50.net
542名無しさん@お腹いっぱい。 [sage]
IFS=$'\n'
2015/05/14(木)07:27:50.46.net
543名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)07:35:52.80.net
544名無しさん@お腹いっぱい。 [sage]
それは
IFS=$'\n'
と書いてある時点で、自明じゃない?
指摘自体が無駄だな
2015/05/14(木)07:44:29.36.net
545名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)07:46:27.90.net
546名無しさん@お腹いっぱい。 [sage]
findに欲しいな。(スペースも改行もその他記号もちゃんとクォートして、シェルで評価すると元のファイル名に戻る形式)
(-print0 は xargs 用にしか使えないし)
2015/05/14(木)07:49:42.88.net
547名無しさん@お腹いっぱい。 [sage]
$ find . -print0 | while read -r -d $'' f; do echo $f; done
それから bash の組み込み関数 printf にある %q が使えるかも
bash$ help printf
:
%q quote the argument in a way that can be reused as shell input
2015/05/14(木)08:06:46.69.net
548名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)09:04:56.24.net
549名無しさん@お腹いっぱい。 [sage]
なぜそういう話になるのかよくわからんが、記載があるならぐだぐだ言うよりコピペで一発なんじゃないか?
2015/05/14(木)09:46:33.11.net
550名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)10:26:05.55.net
551名無しさん@お腹いっぱい。 [sage]
read: 1: Illegal option -d
2015/05/14(木)10:28:14.98.net
552名無しさん@お腹いっぱい。 [sage]
どの質問の話?
2015/05/14(木)10:36:47.40.net
553名無しさん@お腹いっぱい。
どう違うのでしょか?
2015/05/14(木)11:21:47.00.net
554名無しさん@お腹いっぱい。 [sage]
このスレのネタなんて大抵記載がある筈だから。
2015/05/14(木)11:31:29.33.net
555名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)12:13:05.97.net
556名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)12:15:56.28.net
557名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)12:19:07.87.net
558名無しさん@お腹いっぱい。 [sage]
ll
ってのがシェル関数。
hoge=`ls`
echo "$hoge"
ってのがコマンド置換。
どこも似てない。
2015/05/14(木)12:21:29.00.net
559名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)12:25:28.02.net
560名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)12:45:56.98.net
561名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)13:19:51.91.net
562名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)13:27:28.77.net
563名無しさん@お腹いっぱい。 [sage]
単にとある使い方では等価に思えたってだけだろう。
重箱の隅が知りたいみたいな話だな。
2015/05/14(木)14:08:51.71.net
564名無しさん@お腹いっぱい。
2015/05/14(木)14:28:51.82.net
565名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)14:47:51.26.net
566名無しさん@お腹いっぱい。
どんな使い分けをしたらいいのだろうと思っていました
2015/05/14(木)18:12:58.96.net
567名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)19:43:10.96.net
568名無しさん@お腹いっぱい。 [sage]
期待通りの動作をしない場合がないのかだけ考えれば。
2015/05/14(木)20:08:14.55.net
569名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)20:38:06.69.net
570名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)20:54:02.91.net
571名無しさん@お腹いっぱい。 [sage]
気持ちの想像すらできないなんて言われるんですよ。
2015/05/14(木)21:13:48.75.net
572名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)21:20:34.11.net
573名無しさん@お腹いっぱい。 [sage]
2015/05/14(木)21:25:29.94.net
574名無しさん@お腹いっぱい。
echo $a
b () {a=A;echo $a;}
b
echo $a
unset a
(a=A)
echo $a
a=A
echo $a
unset a
# 以下zsh。
() {typeset a=A;}
echo $a
() {a=A;}
echo $a
2015/05/15(金)06:21:18.71.net
575名無しさん@お腹いっぱい。 [sage]
2015/05/15(金)07:08:32.05.net
576名無しさん@お腹いっぱい。 [sage]
IMAPもPOP3も普通に使える
2015/05/15(金)08:03:24.42.net
577名無しさん@お腹いっぱい。 [sage]
b () (a=A;echo $a)
2015/05/15(金)08:50:33.60.net
578名無しさん@お腹いっぱい。 [sage]
あのコマンドはああするべきだったとか思うことはあるけど
曲がりなりにも期待した動作はしてたから問題ないと思い直した
2015/05/15(金)11:06:13.53.net
579名無しさん@お腹いっぱい。
そう。そこに違いがある事が言いたかった。
2015/05/15(金)13:23:55.72.net
580隼人新聞社
★民主 枝 野 は殺人を平気で行う極左テロ暴力団と親密交際があった!!!親密交際!テロの手先!北朝鮮の手先(安倍総理の談話)
★ 菅 直 人 は朝鮮人と親密交際、献金があった!!朝鮮韓国の傀儡手先(TVで報道!)
★民主は日教組の巣窟。極めて危険な団体、危険な政権だった!北朝鮮を熱烈に支援するのが日教組(信頼できる情報スジの話)!!北朝鮮の手先!
民主の基本姿勢は死刑廃止!!だから自民の安倍総理を支援してください!
サヨクと公明創価を応援するは地獄行き
サヨクを応援して1票入れた人は反省してください
2015/05/15(金)17:26:05.10.net
581名無しさん@お腹いっぱい。
何らかの方法で次のコマンドに行かせる方法はありますか?
2015/05/16(土)18:18:52.70.net
582名無しさん@お腹いっぱい。
tclだとexpect
ただ単純な事なら
command<<EOF
y
y
n
EOF
とかこんなんで処理できるよ。
2015/05/16(土)18:38:27.01.net
583名無しさん@お腹いっぱい。
plamolinuxのこじま氏の2015/1/8の日記に少し使い方が書いてある。
2015/05/16(土)18:41:48.45.net
584名無しさん@お腹いっぱい。
2015/05/17(日)09:38:15.41.net
585名無しさん@お腹いっぱい。
最近はbashのほうが強力なのかもしれないし、おそらく似た機能はあると思う。
ただexpectが定番だと思う。ただ構文はtclだけど、
たぶん他のshellを使うのって嫌な部分があるだろうし。
# まず以下のpasswordの部分を書いて、試して、感じる。
expect -c '
spawn su
expect Password:
send "your password\r"
interact
'
# passwordとpromptの指定の部分を書換える必要があると思う。
expect -c '
spawn su ;# expectで制御できるようにsuを起動する。
expect Password: ;# promptにPassword:が来るまで待機。
send "your password\r" ;# 来たら引数で指定されたpasswordを入力する。
expect -re {(%|#|\$) $} ;# Password:が来るまで待機になってたものを、
;# promptの入力受け付け画面に変える。
;# -reは正規表現。ここはmanpageそのまま写しました。
;# 各々によって変える必要があるでしょう。
send "whoami\r"
send "exit\r"
expect eof
'
2015/05/17(日)18:06:01.98.net
586名無しさん@お腹いっぱい。
そのコマンドをforやwhileに直接書いて実行させるか
変数扱いさせてのforやwhile上にコマンドを書いて実行させるか
関数として定義してやってforやwhileの中で実行させてやるか
どれが効率的で高速に実行することができるようになるんだろう?
コマンドの呼び出しや実行や終了の重複を考えるとどうなんだろう?
シェルスクリプトを自分で書けるようになってきて、こんな疑問を持つようになりました
皆さんの意見を聞かせて下さい
2015/05/19(火)17:38:24.79.net
587名無しさん@お腹いっぱい。 [sage]
for/whileループであっても、ループ内をキャッシュしたりせず、
毎回コマンド行とか変数とか関数を評価し直しながら実行してる。
しかしシェルスクリプトに高速性なんて求めてはいけない。
2015/05/19(火)17:45:28.31.net
588名無しさん@お腹いっぱい。 [sage]
何回そのプログラムを実行すれば、そんな間違った高速化の為に費した時間を取り戻せると思う?
2015/05/19(火)20:08:13.54.net
589名無しさん@お腹いっぱい。 [sage]
プロセスを起動するコストは莫大だから
2015/05/19(火)21:29:44.56.net
590名無しさん@お腹いっぱい。 [sage]
みたいなことをbusyboxに内包された汎用コマンドだけでやるには、どうしたらいい?
決められたディレクトリの中に、リサイズしたいjpg画像群があって、
処理済みかどうかを条件分岐したかったんだけど、時間が無くて別のツールで
間に合わせてしまった。再びやりたくて調べてみたけど、実装事例を見つけられず。
2015/05/19(火)21:54:05.59.net
591名無しさん@お腹いっぱい。 [sage]
ちなみにシェルスクリプトでやるならlsでリスト作って
ループしながら処理すればいいと思う
処理済はどこかのファイルにファイル名を書き出して
ループでの処理前にその中にファイルがあるかどうかgrepなどで見て
無ければ処理すればいい
あとなんとなく579=583臭がするけど気のせいか
2015/05/19(火)22:48:04.62.net
592名無しさん@お腹いっぱい。 [sage]
ちなみに同一人物じゃないよ。
2015/05/19(火)22:58:05.98.net
593名無しさん@お腹いっぱい。 [sage]
2015/05/20(水)11:34:26.93.net
594名無しさん@お腹いっぱい。
2015/05/20(水)13:31:28.02.net
595名無しさん@お腹いっぱい。 [sage]
2015/05/20(水)17:55:29.75.net
596名無しさん@お腹いっぱい。
2015/05/20(水)18:12:52.71.net
597名無しさん@お腹いっぱい。 [sage]
○ 答えられなかった(コミュ能力不足)
2015/05/20(水)18:24:21.97.net
598名無しさん@お腹いっぱい。
認めよう。
2015/05/20(水)18:27:39.23.net
599名無しさん@お腹いっぱい。 [sage]
コミュ能力であることは明白。キミさー、これじゃ仕事できないよ。
2015/05/20(水)18:33:19.73.net
600名無しさん@お腹いっぱい。
彼等は九割方優しさで出来てるといえるね。
2015/05/20(水)18:38:02.12.net
601名無しさん@お腹いっぱい。
あいつはおたくらが汚いレスする値打ちも無い。だからこそ俺の様な男がいるのさ。
2015/05/20(水)19:11:05.53.net
602名無しさん@お腹いっぱい。 [sage]
[ HOGE -gt 123 ]
は、
((HOGE > 123))
とも記述できますよね? なら -gt の必要性はあるのでしょうか?
2015/05/21(木)06:15:13.14.net
603名無しさん@お腹いっぱい。 [sage]
一体どういう書式のどんな結果をどうやって受け取っているのか、参考までに見せて欲しい。
2015/05/21(木)10:47:36.25.net
604名無しさん@お腹いっぱい。 [sage]
前者はbourne shellから使える一般的な方法
後者は一部のシェルの拡張機能で、使えない場合がある。
使えるならどっちでもいい。上で出てたbusyboxのshだと使えないんじゃないかな多分
2015/05/21(木)13:10:57.30.net
605名無しさん@お腹いっぱい。 [sage]
数値比較だから16進や8進表現が使える
2015/05/21(木)15:22:40.17.net
606名無しさん@お腹いっぱい。 [sage]
-gt の利点として??
2015/05/21(木)16:10:57.08.net
607名無しさん@お腹いっぱい。 [sage]
数値比較と文字列比較で機能が異なるので
比べるものじゃない
2015/05/21(木)16:34:31.27.net
608名無しさん@お腹いっぱい。 [sage]
2015/05/21(木)17:02:11.38.net
609名無しさん@お腹いっぱい。 [sage]
2015/05/21(木)17:12:42.96.net
610名無しさん@お腹いっぱい。 [sage]
いくら?
2015/05/21(木)22:58:30.82.net
611名無しさん@お腹いっぱい。 [sage]
はなから見せろとか無いわ〜
2015/05/22(金)10:22:56.55.net
612名無しさん@お腹いっぱい。 [sage]
curl
ほい
2015/05/22(金)11:00:25.39.net
613名無しさん@お腹いっぱい。 [sage]
2015/05/22(金)11:11:39.20.net
614名無しさん@お腹いっぱい。 [sage]
ドキュメント読んで出直してこい
2015/05/22(金)11:19:33.89.net
615名無しさん@お腹いっぱい。 [sage]
(echo USER hoge; echo PASS pass; echo STAT) | nc server 110
2015/05/22(金)11:36:29.05.net
616名無しさん@お腹いっぱい。 [sage]
2015/05/22(金)11:38:38.49.net
617名無しさん@お腹いっぱい。 [sage]
2015/05/22(金)11:41:25.48.net
618名無しさん@お腹いっぱい。 [sage]
2015/05/22(金)11:52:29.57.net
619名無しさん@お腹いっぱい。 [sage]
2015/05/22(金)12:14:11.32.net
620名無しさん@お腹いっぱい。 [sage]
2015/05/22(金)12:15:28.97.net
621名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)00:45:24.32.net
622名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)07:23:22.41.net
623名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)07:57:47.77.net
624名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)09:04:23.16.net
625名無しさん@お腹いっぱい。 [sage]
相当な意気込みで実装したいらしいな
いじってやるからまた書き込みなよ
2015/05/23(土)09:53:03.52.net
626名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)11:20:44.87.net
627名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)11:26:14.78.net
628名無しさん@お腹いっぱい。 [sage]
それが正当な対価だろう。
2015/05/23(土)11:31:28.73.net
629名無しさん@お腹いっぱい。 [sage]
「できましたー!!」←これが対価なの?
馬鹿にしてるの?
2015/05/23(土)12:58:15.22.net
630名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)14:47:50.85.net
631名無しさん@お腹いっぱい。 [sage]
シェルスクリプトじゃないとダメです。
繰り返しますがわかる方のみ回答してください。
わからない方は技術力がないと同一ですので(認めたくないでしょうけど)、
素直に黙るのが賢明です。
2015/05/23(土)14:55:03.12.net
632名無しさん@お腹いっぱい。 [sage]
極小ならアセンブラだろ
2015/05/23(土)15:29:15.99.net
633名無しさん@お腹いっぱい。 [sage]
まあこれぶっちゃけ200万レベルの仕事だね
2015/05/23(土)15:32:43.77.net
634名無しさん@お腹いっぱい。 [sage]
繰り返しますがわかる方のみ回答してください。
2015/05/23(土)15:50:06.27.net
635名無しさん@お腹いっぱい。 [sage]
シェルスクリプトで暗号通貨のウォレットでも作れば?
2015/05/23(土)15:58:55.20.net
636名無しさん@お腹いっぱい。 [sage]
すみませんが質問にだけ回答してください。
2015/05/23(土)16:04:25.94.net
637名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)16:39:09.77.net
638名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)16:52:36.76.net
639名無しさん@お腹いっぱい。 [sage]
回答者以外はご遠慮下さい。
2015/05/23(土)17:05:15.19.net
640名無しさん@お腹いっぱい。 [sage]
趣味で遊んでるアナタ方とは違うんです。
2015/05/23(土)17:07:20.51.net
641名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)17:09:47.01.net
642名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)17:43:32.85.net
643名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)17:56:45.03.net
644名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)18:22:50.65.net
645名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)18:27:23.08.net
646名無しさん@お腹いっぱい。 [sage]
2015/05/23(土)18:57:31.97.net
647名無しさん@お腹いっぱい。 [sage]
仕事=電圧×電流×時間
2015/05/23(土)19:02:04.07.net
648名無しさん@お腹いっぱい。 [sage]
2015/05/24(日)08:36:07.43.net
649名無しさん@お腹いっぱい。 [sage]
2015/05/24(日)09:10:55.86.net
650名無しさん@お腹いっぱい。 [sage]
2015/05/24(日)09:16:37.72.net
651名無しさん@お腹いっぱい。 [sage]
2015/05/24(日)09:43:16.72.net
652名無しさん@お腹いっぱい。 [sage]
もういいんじゃない?
2015/05/24(日)11:40:16.08.net
653名無しさん@お腹いっぱい。 [sage]
2015/05/24(日)11:47:41.07.net
654名無しさん@お腹いっぱい。 [sage]
2015/05/24(日)13:06:10.39.net
655名無しさん@お腹いっぱい。 [sage]
趣味で遊んでるアナタ方とは違うんです。
2015/05/24(日)13:18:01.71.net
656名無しさん@お腹いっぱい。 [sage]
2015/05/24(日)13:29:57.13.net
657名無しさん@お腹いっぱい。
cd //
ってやったら、エラーにならずに、pwdが//になったw
どこにいたんだ?ww
2015/05/24(日)18:19:02.96.net
658名無しさん@お腹いっぱい。 [sage]
そんなとこにも移動できるのか
2015/05/24(日)18:24:05.92.net
659名無しさん@お腹いっぱい。 [sage]
bashの仕様です。今ごろ気が付いたの?
2015/05/24(日)18:58:32.27.net
660名無しさん@お腹いっぱい。 [sage]
2015/05/24(日)21:43:39.35.net
661名無しさん@お腹いっぱい。 [sage]
というよりは、POSIX かな
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html
3.267 Pathname
Multiple successive <slash> characters are considered to be the same as one <slash>,
except for the case of exactly two leading <slash> characters.
4.12 Pathname Resolution
If a pathname begins with two successive <slash> characters, the first component following
the leading <slash> characters may be interpreted in an implementation-defined manner,
although more than two leading <slash> characters shall be treated as a single <slash>
character.
2015/05/25(月)12:23:11.70.net
662名無しさん@お腹いっぱい。 [sage]
2015/05/25(月)12:36:39.43.net
663名無しさん@お腹いっぱい。 [sage]
2015/05/25(月)14:37:48.45.net
664名無しさん@お腹いっぱい。
pwdで//が二つ出るのはbashやdashの仕様だよ。
zsh rc tclsh tcshどれも/だよ。
2015/05/25(月)16:59:21.87.net
665名無しさん@お腹いっぱい。 [sage]
2015/05/25(月)19:39:52.69.net
666名無しさん@お腹いっぱい。 [sage]
コマンドライン引数の数字を順番に四則演算するシェルプログラミングを
作りたいのですが、うまくいきません。
演算の順番は+(加算)−(減算)*(乗算)/(除算)です。
#!/bin/sh
total=0
a=("$@")
n=${#a[@]}
n=$((n - 1))
while [ $n -ge 0];
do
total=$((a[$n] + $total))
n=$((n-1))
done
echo "total = $total"
自分でできたのはコマンド引数を加算のみ繰り返す処理です。
もしよい解決方法がおありでしたらご教授お願いします。
2015/05/25(月)20:31:48.30.net
667名無しさん@お腹いっぱい。 [sage]
2015/05/25(月)21:12:27.93.net
668659 [sage]
教本に応えが載ってなくて、序盤のページで行き詰ってしまいました。
2015/05/25(月)21:36:30.45.net
669名無しさん@お腹いっぱい。
total=0
r=0
until test $#@ -eq 0
do
case $(( r % 4 == 0 ? 1 : (r + 3) % 4 == 0 ? 2 : (r + 2) % 2 == 0 ? 3 : 4 )) in
1) total=$(( total + ));;
2) total=$(( total - ));;
3) total=$(( total * ));;
4) total=$(( total / ));;
esac
shift
(( ++r ))
done
2015/05/25(月)21:46:27.07.net
670名無しさん@お腹いっぱい。
r=0
until test $# -eq 0
do
case $(( r % 4 == 0 ? 1 : (r + 3) % 4 == 0 ? 2 : (r + 2) % 2 == 0 ? 3 : 4 )) in
1) total=$(( total + ));;
2) total=$(( total - ));;
3) total=$(( total * ));;
4) total=$(( total / ));;
esac
shift
(( ++r ))
done
2015/05/25(月)21:53:31.12.net
671名無しさん@お腹いっぱい。
for a b c in 1 2 3
do
echo $a $b $c
done
みたいな処理もできる。
2015/05/25(月)21:55:32.99.net
672名無しさん@お腹いっぱい。
2015/05/25(月)22:08:26.16.net
673名無しさん@お腹いっぱい。
baseの後に何が書いてあるのか分らない時は
三項演算子というのを調べると良い。
2015/05/25(月)22:21:07.68.net
674名無しさん@お腹いっぱい。
2015/05/25(月)22:21:52.93.net
675名無しさん@お腹いっぱい。 [sage]
echo "total = $total"
2015/05/25(月)22:37:26.67.net
676名無しさん@お腹いっぱい。 [sage]
どれだけ偉いんだって話だよな。
2015/05/25(月)23:22:22.44.net
677名無しさん@お腹いっぱい。 [sage]
まあawkでいいような気もするけど。
2015/05/26(火)01:08:45.37.net
678659 [sage]
2015/05/26(火)06:28:38.16.net
679名無しさん@お腹いっぱい。
PROMPT_COMMANDの設定について教えて下さい。
ターミナルのタイトルバーに現在のディレクトリ名"だけ"を表示したいのですが、
プロンプトの設定でやる
PS1=\w
のような \w がPROMPT_COMMANDの設定では使えないんですね?
どうやったらいいのでしょうか?
2015/05/26(火)14:02:41.07.net
680名無しさん@お腹いっぱい。 [sage]
2015/05/26(火)15:34:18.87.net
681名無しさん@お腹いっぱい。 [sage]
2015/05/26(火)15:43:42.53.net
682名無しさん@お腹いっぱい。 [sage]
PROMPT_COMMAND='echo -ne "3]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}7"'
PROMPT_COMMAND='echo -ne "3]0;${PWD/$HOME/~}7"'
2015/05/26(火)15:53:38.10.net
683名無しさん@お腹いっぱい。
ごめん。三項演算子に間違いがあった。
(r + 2) % 2 == 0 ? 3 : 4 )) in じゃなくて
(r + 2) % 4 == 0 ? 3 : 4 )) in だった。
以下楽しくなって、もう一つ書いといた。zshでしか動かないけれど。
a=(+ - \* /)
b ()
{
(( $# == 1 )) || b $@[1,-2]
total=$(( total $a[$(( ($# + 3) % 4 == 0 ? 1 : ($# + 2) % 4 == 0 ? 2 : ($# + 1) % 4 == 0 ? 3 : 4 ))] $@[-1] ))
echo $total
}
b $@
じゃあ勉強頑張って。
2015/05/26(火)20:32:22.47.net
684659 [sage]
sh、zsh、bashの違いが何やら…
2015/05/26(火)21:00:09.14.net
685名無しさん@お腹いっぱい。 [sage]
そんなあなたにbusybox
2015/05/26(火)22:22:51.71.net
686名無しさん@お腹いっぱい。
と思う。だからbashとzshは配列の扱いなど雑多な違いがある。以下昨日のbash版。
たぶんもっと簡素に書けるのだろうけど私も全然詳しくない。
a=(+ - \* /)
b ()
{
declare -a c=( $@ )
(( $# == 1 )) || b $( echo ${c[@]} |cut -d ' ' -f -$(( $# - 1 )) )
total=$(( total ${a[$(( ($# + 3) % 4 == 0 ? 0 : ($# + 2) % 4 == 0 ? 1 : ($# + 1) % 4 == 0 ? 2 : 3 ))]} ${c[$# - 1]} ))
echo $total
}
b $@
以下みたいな書き方も簡易な条件文。何が起こるのかは(( 1 ))した後にecho $?とかして
値を確認できる。c言語は0が偽だけどshellだと0が真なので注意。cでreturnで0返すでしょ。
さらに(( 0 ))などは、echo $?した時に0として返っていない事に注目。
(( 1 )) && echo true
(( 0 )) || echo true
自ら自らを呼ぶ、再帰関数は調べればすぐ出てくる。
declareは、再帰関数ゆえ、変数名が同じになってしまうから、関数を呼んだ側の変数の値を、
呼ばれた側が変える事が無いようにしている。ローカル変数とか、スコープとか調べると出てくる。
2015/05/27(水)08:32:10.49.net
687名無しさん@お腹いっぱい。
コマンドライン引数で指定されたキーワードに一致する部分を持つ、カレントディレクトリ配下のファイルをそのディレクトリ階層をそのままにコピーしたいのですが、何かよい方法はありますでしょうか。
何かよい方法はありますでしょうか。
実行環境はCentOSをTera Term とSSH接続している状態です。
実行例として
[user@portal ~]$ ./sample.sh A copyTo
第1引数はキーワード、第2引数はコピー先のディレクトリ
これでコピーができたことをTera Term上で確認できることが望ましいです。
2015/05/27(水)10:46:37.27.net
688名無しさん@お腹いっぱい。 [sage]
2015/05/27(水)11:05:38.31.net
689名無しさん@お腹いっぱい。 [sage]
2015/05/27(水)13:08:06.76.net
690名無しさん@お腹いっぱい。
#!/bin/sh
cp -Rv [""] ""
>>689はビット演算子使っててよくわからないですが、目的の動作は確認致しました!
ありがとうございます!
2015/05/27(水)13:41:16.73.net
691名無しさん@お腹いっぱい。 [sage]
2015/05/27(水)16:04:06.52.net
692名無しさん@お腹いっぱい。
2015/05/28(木)10:32:09.00.net
693名無しさん@お腹いっぱい。
total=; shift
a=(+ - \* /)
b ()
{
(( $# == 1 )) || b $@[1,-2]
total=$(( total $a[$(( ($# + 3) % 4 == 0 ? 1 : ($# + 2) % 4 == 0 ? 2 : ($# + 1) % 4 == 0 ? 3 : 4 ))] $@[-1] ))
echo $total
}
b $@
2015/05/28(木)12:07:05.77.net
694名無しさん@お腹いっぱい。
まぁ本人じゃないだろうし引かせてもらおう。
2015/05/28(木)12:23:47.19.net
695名無しさん@お腹いっぱい。
total=; shift
だけでいいんじゃないかな。急ぎなので、確認して無いけど。
2015/05/28(木)12:25:16.28.net
696名無しさん@お腹いっぱい。
2015/05/28(木)12:32:06.05.net
697名無しさん@お腹いっぱい。 [sage]
自分も、参考までに考えておいた
初期値は 0、引数の数は不定で、加算、減算、乗算、除算を繰り返すと解釈した
#! /bin/sh -x
while
total=$(
echo "( ${total:-0} ${1:++ } ${2:+- } ) ${3:+* } ${4:+/ }" | bc
)
[ 4 -lt $# ] && shift 4
do :
done
echo "ANSWER: ${total}"
exit
#! /bin/sh -x
while [ 0 -lt $# ]
do
total=$(
echo "( ${total:-0} + ${1:- 0} - ${2:- 0} ) * ${3:- 1} / ${4:- 1}" | bc
)
shift $(( $# > 4 ? 4 : $# ))
done
echo "ANSWER: ${total:-0}"
exit
2015/05/28(木)12:32:46.85.net
698名無しさん@お腹いっぱい。 [sage]
2015/05/28(木)12:35:03.52.net
699名無しさん@お腹いっぱい。
# 以下をtest.shで保存。
#!/bin/sh
a='/+-*'
test $# -eq 1 && { echo ; exit; } || total=$( ./test.sh $( echo $@ |cut -d ' ' -f -$(( $# - 1 )) ) )
echo $(( $total $( echo $a |cut -b $(( ( $# + 3 ) % 4 + 1 )) ) $( eval echo $$#) ))
2015/05/28(木)18:17:15.57.net
700名無しさん@お腹いっぱい。 [sage]
2015/05/28(木)21:33:17.29.net
701名無しさん@お腹いっぱい。
# 割り算部分はできたよ。もう疲れたからやめようかな。
# scaleの値を調整すれば何処まで計算するか指定できる。
# -の値を指定するとずっと計算し続けるので注意。
# dashで動くように書いてる。
#!bin/sh
scale=8
total=; shift
m ()
{
test $(( )) -eq 0 -o $(( )) -eq 0 && return
b=
a=$(( ${b}0 / ))
echo -n $a
m $(( ${b}0 % )) $(( - 1 )) # 余り、割る数、scale.
}
echo -n $(( total / )).
m $(( total % )) $scale
2015/05/28(木)21:54:55.27.net
702名無しさん@お腹いっぱい。
./保存したfile 355 113
と引数二つです。
2015/05/28(木)22:03:27.91.net
703名無しさん@お腹いっぱい。 [sage]
2015/05/28(木)23:39:51.34(4mhEJHtNx)
704名無しさん@お腹いっぱい。
>>697 本人じゃなくてわめいてる方ですけど、勉強になります。
一つ目書き方は知らないので勉強しておく事して二つ目ので見ると、
そっか、と思わされました。確かにその通りだと、コードも短いし理解もしやすいし。
>>666は彼のを参考にしたほうが良かと。私のは今考えて見ると三項演算子も無駄だったし、
ただ>>699は毒毒しい事をしているので、結構勉強になると思う。
2015/05/29(金)02:54:31.46.net
705名無しさん@お腹いっぱい。
# ごめん>>701 それ再帰してるから途中で計算できてなかった。
# 悪い所も無駄に関数な所も直して無いけど。以下でいける。
scale=-1
total=; shift
m ()
{
b= # : 余り、: 割る数、: scale.
until test $scale = 0 -o b = 0
do
a=$(( ${b}0 / ))
echo -n $a
b=$(( ${b}0 % ))
scale=$(( scale - 1 ))
done
}
echo -n $(( total / )).
m $(( total % )) $scale
2015/05/29(金)13:11:54.28.net
706名無しさん@お腹いっぱい。
2015/05/29(金)13:15:06.25.net
707名無しさん@お腹いっぱい。
2015/05/29(金)14:07:59.50.net
708名無しさん@お腹いっぱい。
while false
true
do
echo test
break
done
前にfor分は以下で動くのになんでwhileは駄目なんだろうと思った、謎がとけました。
for r in *
{
echo $r
}
2015/05/29(金)17:25:17.77.net
709名無しさん@お腹いっぱい。
離れ隠しとも名付けようかこの新手
2015/05/29(金)17:41:57.11.net
710名無しさん@お腹いっぱい。 [sage]
> >>697 本人じゃなくてわめいてる方ですけど、勉強になります。
意外な効果で驚くなあ。でも、役に立って良かった
> 一つ目書き方は知らないので勉強しておく
って言葉で改めて見直すと
> 序盤のページで行き詰ってしまいました。
序盤で行き詰まっているんだよね。そんな人に対して適当な回答じゃあ無かったかもしれないなあ
( parameter substitution の機能とか使うべきではなかったか )と思い、妙なヒント入りでもう一度書いておきました
蛇足だけど、V7 Bourne Shell だと、:- でなく - なんだよね
http://www.in-ulm.de/~mascheck/bourne/v7/
> ${parameter-word}
> If parameter is set then substitute its value; otherwise substitute word.
それでなのか、POSIX でも定義されていて
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02
bash や、dash でも echo ${HOGE-$HOME} が機能する
>>709
man dash, man bash, man ksh, man zshmisc と確認してみたけど
while list; do list; done 相当の事が書いてある
結構誰でも知っているて、新手では無いよ
2015/05/29(金)19:43:00.94.net
711名無しさん@お腹いっぱい。 [sage]
total=0
while
case $# in
0)
break
;;
1)
total=$( echo "${total} + " | bc )
break
;;
2)
total=$( echo "( ${total} + - )" | bc )
break
;;
3)
total=$( echo "( ${total} + - ) * " | bc )
break
;;
2015/05/29(金)19:44:12.32.net
712名無しさん@お腹いっぱい。 [sage]
total=$( echo "( ${total} + - ) * / " | bc )
break
;;
[5-9]|[0-9]*[0-9])
total=$( echo "( ${total} + - ) * / " | bc )
shift 4
true
;;
*)
echo 'It never comes here and we know it.' >&2
exit 1
;;
esac
do : 'Do nothing with list-2 of "while list-1; do list-2; done"'
done
echo "ANSWER: ${total}"
exit
2015/05/29(金)19:44:26.35.net
713名無しさん@お腹いっぱい。
#!/bin/zsh
eval echo -n ${$#..1} \'$( yes '+-*/'|tr -d '\n' |dd bs=$(( $# - 1)) \
count=1 cbs=1 conv=unblock 2>/dev/null | sed 's#^#r#')\' p |dc
#!/bin/sh
{ eval echo -n $( seq -f "$%g" $# |tac ); echo "$( yes '+-*/'|tr -d '\n' \
|dd bs=$(( $# - 1)) count=1 cbs=1 conv=unblock 2>/dev/null | sed 's#^#r#' )" p; } |dc
2015/05/30(土)04:04:02.38.net
714名無しさん@お腹いっぱい。 [sage]
eval echo $( seq -f "$%g" $# | tac )
の部分は "$@" とか使えないものかと思い、しばらく考えたんだが...
echo "$@ " | tac -s " "
2015/05/30(土)07:57:05.78.net
715名無しさん@お腹いっぱい。
#!/bin/sh
eval echo 0 $( printf '$%d + $%d - $%d @ $%d /' $( seq $# ) | \
sed 's#+ #+ 0#g; s#- #- 1#g; s#@ #@ 1#g; a p' ) |tr '@' '*' |dc
2015/05/31(日)07:18:32.49.net
716名無しさん@お腹いっぱい。 [sage]
後段も書き換えてみた
echo "$( yes '+-*/'|tr -d '\n' \
|dd bs=$(( $# - 1)) count=1 cbs=1 conv=unblock 2>/dev/null | sed 's#^#r#' )" p
#! /bin/sh
# 何をするスクリプトかぱっと見で全くわからないので、一応書いておくけど、
# これも >>666 の回答
{
echo "$@ " | tac -s " "
yes 'r+r-r*r/' | tr -d '\n' | head -c $(( ( $# - 1 ) * 2 ))
echo "p"
} | dc
>>715
アイデアが尽きないね。@は、エスケープ用かな?外しておいた
#! /bin/sh
eval echo 0 $(
printf '$%d + $%d - $%d \* $%d / ' $( seq $# ) |
sed 's#+ #+ 0#g; s#- #- 1#g; s#* #* 1#g; a p'
) | dc
2015/05/31(日)08:54:03.31.net
717名無しさん@お腹いっぱい。 [sage]
2015/05/31(日)11:51:51.69.net
718名無しさん@お腹いっぱい。 [sage]
eval とかなるべく使いたくないけど、printf で展開するアイデアが面白いな
#! /bin/sh
{
eval echo 0 $(
printf '$%d + $%d - $%d \* $%d / ' $( seq $# ) |
sed -e 's/ [+/*\-]* //g'
)p
} | dc
2015/05/31(日)12:23:30.92.net
719名無しさん@お腹いっぱい。 [sage]
#! /bin/sh
{
echo 0 $(
n=$(( $# % 4 ))
printf '%d + %d - %d \* %d / ' "$@" |
sed -e 's/\([0-9]\{1,\} [+/*\-]* \)\{'"$(( n == 0 ? 0 : 4 - n ))"'\}$//'
)p
} | dc
2015/05/31(日)18:16:33.13.net
720名無しさん@お腹いっぱい。 [sage]
訂正
#! /bin/sh
{
echo "0 $(
n=$(( $# % 4 ))
printf '%d + %d - %d * %d / ' "$@" |
sed -e 's/\([0-9]\{1,\} [+/*\-]* \)\{'"$(( n == 0 ? 0 : 4 - n ))"'\}$//'
)p"
} | dc
2015/06/01(月)06:34:30.80.net
721名無しさん@お腹いっぱい。 [sage]
#! /bin/sh
echo "0 $( printf '%s + %s - %s * %s / ' "$@" "END" | sed -e 's/END.*$//' )p" | dc
2015/06/02(火)19:51:41.64.net
722名無しさん@お腹いっぱい。 [sage]
2015/06/02(火)20:48:50.22.net
723名無しさん@お腹いっぱい。 [sage]
printf '%s + %s - %s * %s / ' "$@" "END" | sed -e 's/^/0 /; s/END.*$/p/' | dc
2015/06/04(木)06:35:03.60.net
724名無しさん@お腹いっぱい。
ここのpageを見て理解しながら作りました。
http://www.maitou.gr.jp/rsa/
素数判定のアルゴリズムは以下のC言語のものを、冪乗の計算を一度に変えたものです。
http://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0%E5%88%A4%E5%AE%9A
今は一度コメントを全部消した状態で貼っておきます。
dcで書いてるので呪文っぽいので理解しようとしないほうが吉です。
そのうちbase64でコメントつけて貼るかもしれません。
factorにすぐやられますから、実用性は無いです。
dashで動くつもりでしたがzshでなければ動きません。
printf %d 010
とした時の挙動の違いに今気付きました。
2015/06/06(土)17:40:55.66.net
725名無しさん@お腹いっぱい。
# 例: prime 10000 20000
prime ()
{
dc -e "$( seq ${2:-} )"'
z sc 0 sr [S2 lr 1 + sr lr lc >!] s! l! x
[[sg 3 Q] sk [p sg 3 Q] s.] sA
[d 2 >k d 2 =. d 2 % 0 =k] sB
[[sg 2 Q] sk [p sg 2 Q] s. d v s^ 3 s/] sC
[l^ l/ >. d l/ % 0 =k l/ 2 + s/ lD x] sD
0 sr
[L2 [lA x lB x lC x lD x]x lr 1 + sr lr lc >@] s@ l@ x
'
}
# 上記、prime関数から得られた適当な素数二つが引数です。
# そこから秘密鍵、公開鍵を出力します。
# 例: keygen 10243 19963
keygen ()
{
dc -e "[ 1 :a]x [ 2 :a]x [ * 3 :a]x"'
[1 ;a]x 1 - [2 ;a]x 1 - * 2 / 1 + S2
[l2 lr [d la :k]x / [la :p]x la 1 + sa l. x] sA
[[la 1 - ;k]x n [ ] n [la 1 - ;p]x n [ ] n [3 ;a]x p sg] s.
1 sa l2 v s^ 2 sr
[l2 lr % 0 =A lr 1 + sr lr l^ !<B] sB lB x
'
}
2015/06/06(土)17:42:57.23.net
726名無しさん@お腹いっぱい。
# 例:
# keygen 10243 19963
# > 7 14603629 204481009
# > 17 6013259 204481009
# > 119 859037 204481009
# encrypt 859037 204481009 暗号化するfile >暗号化した後のfile
encrypt ()
{
echo 8 o $( printf "8 i %d 12 i | n [ ] n " $( od -vt oC -A n ) ) |dc
}
# 上記の公開鍵で暗号化したものを、秘密鍵で復号します。秘密鍵は上記の例で暗号化した場合、
# 以下の組み合わせになります。
# encrypt 119 204481009 暗号化されたfile >復号化した後のfile
decrypt ()
{
printf "8 i %d 12 i | P " $( cat ) |dc
}
2015/06/06(土)17:44:29.67.net
727名無しさん@お腹いっぱい。
2015/06/06(土)20:13:54.61.net
728名無しさん@お腹いっぱい。
# 他に、確認に使ったprogram.
# ずるしてopensslを使っています。
# まず!!!!!!!!復号化するfileに値を入れて下さい!!!!!!!!!!!!!。小さいfileが良いと思います。
# mktempで作るfileは自動では削除しません。最初にechoで出力するので手動でお願いします。
# primeで適当な素数を二つ選択しkeygenを行い、そこで作られた鍵で暗号化したfileを
# 復号できるかの確認です。
# 使い方。
# check_2 $( prime 10000 20000 )
# 出力は、出力した時に確認したkeygenに使った素数二つ,暗号化復号化に使える数字と法です。
2015/06/06(土)20:27:58.37.net
729名無しさん@お腹いっぱい。
file_encrypt=$( mktemp )
file_decrypt=$( mktemp )
echo 後で削除する事、$file_encrypt $file_decrypt
check_2 ()
{
test $# -lt 2 && return
p1=$( echo $@ |tr ' ' '\n' |sed -n $(( $( openssl rand 2 \
|od -t u -A n ) % $# + 1 ))p )
while # 使いました!!!
p2=$( echo $@ |tr ' ' '\n' |sed -n $(( $( openssl rand 2 \
|od -t u -A n ) % $# + 1 ))p )
test $p2 -eq $p1
do :
done
f ()
{
test $# -eq 0 && return
encrypt $(( $# % 2 ? : )) $file >$file_encrypt
decrypt $(( $# % 2 ? : )) $file_encrypt >$file_decrypt
diff $file $file_decrypt && echo 成功。keygen $p1 $p2, \
|| echo 失敗。keygen $p1 $p2, 1>&2
shift 3
f $@
}
f $( keygen $p1 $p2 )
check_2 $( echo $@ |tr ' ' '\n' |grep -vE "($p1|$p2)" )
2015/06/06(土)20:29:33.71.net
730名無しさん@お腹いっぱい。
opensslのrandの値も変える必要があったような気がします。もう忘れました。
現在対したコメント無くてごめんなさい。
2015/06/06(土)20:36:41.36.net
731名無しさん@お腹いっぱい。 [sage]
printf '%s + %s - %s * %s / ' '0 0' 0 1 1 "$@" 'p quit' | dc
>>724-730 力作ですなぁ
2015/06/07(日)19:13:41.49.net
73210人に1人はカルトか外国人
・沢山の人が偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い
靖国参拝、皇族、国旗国歌、神社神道を嫌うカルト
10人に一人はカルトか外国人
「ガスライティング」で検索を!
2015/06/08(月)17:47:19.33.net
733名無しさん@お腹いっぱい。 [sage]
find /foo -iname "123foo.txt" -o -iname "foo.txt"
をしたくて、"123foo.txt" から"foo.txt"を
作りたいのですけどいい方法を教えていただけないでしょうか?
123は0桁から4桁あります。
よろしくお願いします。
2015/06/08(月)21:12:33.56.net
734名無しさん@お腹いっぱい。 [sage]
2015/06/08(月)22:27:29.53.net
735名無しさん@お腹いっぱい。 [sage]
2015/06/08(月)23:04:24.58.net
736名無しさん@お腹いっぱい。 [sage]
>>734の場合は問題ない
2015/06/09(火)00:33:36.94.net
737名無しさん@お腹いっぱい。 [sage]
$ filename2=$(echo $filename1 | tr -d [0-9])
$ echo $filename2
foo.txt
2015/06/09(火)01:25:54.94.net
738名無しさん@お腹いっぱい。 [sage]
$ filename=123foo.txt
$ echo ${filename##*[0-9]}
foo.txt
2015/06/09(火)01:49:15.59.net
739名無しさん@お腹いっぱい。 [sage]
trか変数展開をつかうのか
自分は今まで何考えてたんだ
コマンド、変数展開を使いこなせてないことを痛感した
ありがとう
2015/06/09(火)08:44:03.74.net
740名無しさん@お腹いっぱい。
foundfiles=$(find /hoge/hoge1 /foo/foo1 -name -type f *.txt)
for x in "${foundfiles}"
do
処理
done
としてみたのですが、うまくいきませんでした。
どこを直せばよいのでしょうか?
2015/06/11(木)16:47:01.72.net
741名無しさん@お腹いっぱい。 [sage]
2015/06/11(木)17:10:28.24.net
742名無しさん@お腹いっぱい。
foundfiles=$(find /hoge/hoge1 /foo/foo1 -name *.txt -type f)
for x in "${foundfiles}"
do
処理
done
これでokですか?まだ、怪しいとこありますか?
2015/06/11(木)18:04:07.93.net
743名無しさん@お腹いっぱい。 [sage]
気体通りになってるか確認して終わり
かまう奴はアホか
2015/06/11(木)18:13:25.03.net
744名無しさん@お腹いっぱい。
豚
2015/06/11(木)19:55:03.20.net
745名無しさん@お腹いっぱい。
for x in "${foundfiles}"
do
echo "$x"
done
とやると一見上手くいったように見えましたが、
foundfiles=$(find /hoge/hoge1 /foo/foo1 -name *.txt -type f)
for x in "${foundfiles}"
do
echo "${x##*/}"
echo "$x"
done
としてやると、初めのファイルのファイル名だけ出てきて、あとは検索結果が表示されるだけでした。
なにがまずかったのですか?直すことはできるのでしょうか? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
2015/06/12(金)12:06:31.64.net
746名無しさん@お腹いっぱい。 [sage]
そのあたりがわかってないみたい
がんばれ
2015/06/12(金)13:33:39.96.net
747名無しさん@お腹いっぱい。
なんでなんだろう?
for x in "$@"
というのをよく見かけるからまねしてました。
"${foundfiles}"は検索結果を1つの文字列にする。
なら、"$@"は?あれれ?
どういうことなのでしょうか?
2015/06/12(金)14:39:13.27.net
748名無しさん@お腹いっぱい。 [sage]
そうしない身に付かない
2015/06/12(金)14:43:19.06.net
749名無しさん@お腹いっぱい。 [sage]
for で変数に入れて回す場合、IFSに改行をセットして、区切ってもらうために変数をクォートはしない
#!/bin/sh -x
var='
a b c d e
2OrMoreSpaces between the words
x y z
'
IFS='
'
# for i in "${var}"
for i in ${var}
do
echo "=> $i <="
done
応援するよ。がんばって
2015/06/12(金)14:49:36.84.net
750741 [sage]
□E. 学習用テキスト
1. Bourne Shell自習テキスト ( 1993年 ) pdf お薦め
一応、引用しといた
man dash
@ Expands to the positional parameters, starting from one.
When the expansion occurs within double-quotes, each posi‐
tional parameter expands as a separate argument. If there
are no positional parameters, the expansion of @ generates
zero arguments, even when @ is double-quoted. What this
basically means, for example, is if is “abc” and is
“def ghi”, then "$@" expands to the two arguments:
"abc" "def ghi"
が "abc"で、 が "def ghi" のとき、"$@" は "abc" "def ghi" に展開される
2015/06/12(金)15:27:47.27.net
751名無しさん@お腹いっぱい。 [sage]
訂正 man bash、man dash
2015/06/12(金)15:31:58.73.net
752名無しさん@お腹いっぱい。
2015/06/13(土)13:45:25.05.net
753名無しさん@お腹いっぱい。 [sage]
foundfiles=( $(find /hoge/hoge1 /foo/foo1 -name *.txt -type f) ) ←配列にする
for x in "${foundfiles[@]}"
でおk
2015/06/13(土)20:52:58.13.net
754名無しさん@お腹いっぱい。
それでできました
()はコマンド置換だけじゃないんですね
2015/06/15(月)13:27:36.31.net
755名無しさん@お腹いっぱい。 [sage]
2015/06/15(月)13:44:30.60.net
756名無しさん@お腹いっぱい。 [sage]
-----------------------
#!/bin/bash
LAST=0
function test() {
LAST=
echo $LAST
}
echo "LAST=$LAST"
test 111
echo "LAST=$LAST"
x=$(test 222)
echo "LAST=$LAST x=$x"
--------------------------
を実行すると
LAST=0
111
LAST=111
LAST=111 x=222 ←なぜ LASTが 222に変更されないのか?
実際は関数のネストとかでもっと複雑だったんだが、
変な動作するようになってデバッグに苦労した・・・
2015/06/15(月)23:58:45.64.net
757名無しさん@お腹いっぱい。 [sage]
2015/06/16(火)00:33:43.81.net
758名無しさん@お腹いっぱい。 [sage]
2015/06/16(火)00:48:56.39.net
759名無しさん@お腹いっぱい。 [sage]
スペース入りファイル名に未対応、失格。
2015/06/17(水)12:27:35.75.net
760名無しさん@お腹いっぱい。 [sage]
では模範解答をどうぞ
2015/06/17(水)13:55:31.31.net
761名無しさん@お腹いっぱい。 [sage]
2015/06/17(水)20:41:26.36.net
762名無しさん@お腹いっぱい。 [sage]
2015/06/17(水)21:21:37.47.net
763名無しさん@お腹いっぱい。 [sage]
IFS_tmp=$IFS; IFS=$"\n"
2015/06/17(水)21:25:36.37.net
764名無しさん@お腹いっぱい。 [sage]
2015/06/18(木)05:55:23.84.net
765名無しさん@お腹いっぱい。 [sage]
2015/06/18(木)07:35:13.14.net
766名無しさん@お腹いっぱい。 [sage]
2015/06/18(木)07:48:16.57.net
767名無しさん@お腹いっぱい。
2015/06/18(木)10:04:59.96.net
768名無しさん@お腹いっぱい。 [sage]
を避ける理由は?
2015/06/18(木)10:17:46.54.net
769名無しさん@お腹いっぱい。 [sage]
でスペースや改行の入ったファイル名もOKだよね
unix仕様のファイル名の終端はNULLだったっけ?
2015/06/23(火)21:09:03.45.net
770名無しさん@お腹いっぱい。 [sage]
2015/06/24(水)07:32:33.60.net
771名無しさん@お腹いっぱい。 [sage]
それ使うのは初心者で、逆に実行効率が悪くなる。
2015/06/24(水)15:25:39.96.net
772名無しさん@お腹いっぱい。 [sage]
理由は?
2015/06/24(水)15:43:54.58.net
773名無しさん@お腹いっぱい。 [sage]
xargsだとexecシステムコールの引数個数制限までは1個のプロセス作ってその引数に見つかったファイル全部渡すのかな?
2015/06/24(水)15:44:35.63.net
774名無しさん@お腹いっぱい。 [sage]
2015/06/24(水)15:53:10.35.net
775名無しさん@お腹いっぱい。 [sage]
2015/06/24(水)20:58:37.54.net
776名無しさん@お腹いっぱい。 [sage]
2015/06/26(金)03:14:09.55.net
777名無しさん@お腹いっぱい。 [sage]
find . -exec sh -c 'mv "$@" hoge' {} +
今度は逃げ出すかな?
2015/06/26(金)08:16:34.16.net
778名無しさん@お腹いっぱい。 [sage]
2015/06/26(金)08:48:53.03.net
779名無しさん@お腹いっぱい。 [sage]
xargsと比べてって事だから、省略したけど、.を避けるのはfindでやるんだろ。
あえてやるなら
find . -exec sh -c 'shift; mv "$@" hoge' {} +
xargs押しのベテランさんはどうするんだろう?
初心者に教えてくださいな。
2015/06/26(金)09:07:10.65.net
780名無しさん@お腹いっぱい。 [sage]
2015/06/26(金)09:11:18.72.net
781名無しさん@お腹いっぱい。 [sage]
2015/06/26(金)09:21:57.94.net
782名無しさん@お腹いっぱい。 [sage]
$ sh -c 'echo "$@"' 1 2 3 4
2 3 4
↑なぜ 1 が消えるかわかるかな?
$ sh -c 'echo "$@"' DUMMY 1 2 3 4
1 2 3 4
↑DUMMYを入れると 1 を取りこぼさないねw
2015/06/26(金)09:31:47.52.net
783名無しさん@お腹いっぱい。 [sage]
ベテラン(老害ともいう)登場。
おじいちゃんが現役時代のfindはそうだったらしいけど、今のfindはもっとお利口なんだよ。
おじいちゃんが現役だったころは
find ... -exec ..... \;
だっただろ。今は
find ... -exec ..... +
ってやるんだよ。
>>781-782 これはスマンかった。これだね
| sh -c string [name [arg ...]]
でも、shiftは以降に対して働くから
> shiftしたら逆だぞ、引数「2個」取りこぼす。
キミもわかってないね。
2015/06/26(金)11:33:10.48.net
784名無しさん@お腹いっぱい。 [sage]
2015/06/26(金)11:51:05.26.net
785名無しさん@お腹いっぱい。 [sage]
sh -c 'echo "${1:+"" "$@"}"' 1 2 3 4
煽りぎみの言葉(言いがかり、逃げ出した、メンタルだけは褒めてあげよう、バカ)を
無闇に使うのは止めてさあ、楽しくいこう
これだけ知ってりゃあ良いでしょ
歴史的には -print0 は GNU find の、-exec + は他の多くの Unix での拡張で、
移植の際は注意が必要だったが、-exec + が 2001年版から POSIX に記載された事で
GNU find でも 2005 年頃( ver 4.2.12 )から -exec + が使える様になった
新しく書くスクリプトでは xargs の別の機能を使う場合を除いて find -exec + の方が良いだろう
ちなみに -exec + も SVR4 からあるようだよ
http://www.in-ulm.de/~mascheck/various/find/
> Actually it originates from SVR4 ('88), where it was not documented yet (this feature implemented by
> D.Korn, see two messages from the austin-group-list, local copies),
2015/06/26(金)11:55:14.50.net
786名無しさん@お腹いっぱい。 [sage]
2015/06/26(金)12:06:22.64.net
787名無しさん@お腹いっぱい。 [sage]
2015/06/26(金)12:11:39.69.net
788名無しさん@お腹いっぱい。 [sage]
なにを指摘されたのかも理解していないようだ
2015/06/26(金)13:06:31.47.net
789名無しさん@お腹いっぱい。 [sage]
2015/06/26(金)13:08:31.26.net
790名無しさん@お腹いっぱい。 [sage]
なにを指摘されたのかも理解していないようだ
2015/06/26(金)17:04:27.96.net
791名無しさん@お腹いっぱい。 [sage]
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=find&dir=jpman-5.4.0%2Fman§=0#sect3
> -exec utility [argument ...] {} +
> -exec と同じですが、各 utility の起動において ``{}'' はなるべく多
> くのパス名と置き換えられます。この動作は xargs(1) のものに似てい
> ます。
http://linuxjm.osdn.jp/html/GNU_findutils/man1/find.1.html
> -exec command {} +
> アクション -exec のこの変形も、選択したファイルに対して指定したコマンドを実行するが、
> コマンドラインを形成するとき、選択した各ファイル名をコマンドラインの末尾に
> 追加して行くという方法を取る(訳注: 略)。
> そのため、コマンドを呼び出す回数は、マッチしたファイルの数より ずっと少なくてすむわけだ。
> コマンドラインの形成法は、xargs のコマンドライン形成法とほぼ同じである。
2015/06/26(金)18:36:29.66.net
792名無しさん@お腹いっぱい。 [sage]
2015/06/26(金)18:48:07.56.net
793名無しさん@お腹いっぱい。 [sage]
こんなの書かなきゃいけなくなる場合ならxargsでいい気がする
2015/06/26(金)22:37:52.51.net
794名無しさん@お腹いっぱい。 [sage]
バカはすぐオウム返しするよな。
2015/06/26(金)23:30:59.69.net
795名無しさん@お腹いっぱい。 [sage]
それを貼って、何の意味があるの?
2015/06/26(金)23:32:45.65.net
796名無しさん@お腹いっぱい。 [sage]
2015/06/27(土)00:07:20.23.net
797名無しさん@お腹いっぱい。 [sage]
2015/06/27(土)00:25:43.31.net
798名無しさん@お腹いっぱい。 [sage]
2015/06/27(土)07:41:59.25.net
799名無しさん@お腹いっぱい。 [sage]
2015/06/27(土)08:10:57.63.net
800名無しさん@お腹いっぱい。 [sage]
2015/06/27(土)13:57:24.86.net
801名無しさん@お腹いっぱい。 [sage]
限定的な条件でxargsの方がファイル数/MAX_ARGSだけプロセス数が少ないから勝ちなの?
はいはい、えらいえらい。
2015/06/27(土)18:01:58.60.net
802名無しさん@お腹いっぱい。 [sage]
+は使い物にならんとか親切に教えてあげたら、
shとか持ち出す本末転倒ぶりを晒してるだけじゃん。
いい加減逆ギレはみっともないよ。
2015/06/27(土)19:42:45.43.net
803名無しさん@お腹いっぱい。 [sage]
おじいちゃんの世代って、わかりやすくて楽だね。
2015/06/27(土)20:48:29.92.net
804名無しさん@お腹いっぱい。 [sage]
2015/06/27(土)22:37:52.63.net
805名無しさん@お腹いっぱい。 [sage]
↑で解決。不要プロセスなし。
2015/06/28(日)07:24:37.85.net
806名無しさん@お腹いっぱい。 [sage]
2015/06/28(日)16:41:15.99.net
807名無しさん@お腹いっぱい。 [sage]
2015/06/28(日)17:03:28.70.net
808名無しさん@お腹いっぱい。 [sage]
2015/06/28(日)22:54:42.25.net
809名無しさん@お腹いっぱい。
sed -e 's/[a-z][0-9]/.00./g' やsed -e 's/[a-z][0-9]/[a-z]AA[0-9]/g' を
試しましたがうまくいきませんでした。
どのようにすればよいのでしょうか?sed以外でできるのでしょうか?
2015/06/29(月)11:33:48.48.net
810名無しさん@お腹いっぱい。 [sage]
2015/06/29(月)12:03:55.86.net
811名無しさん@お腹いっぱい。 [sage]
sed -e 's/\([a-z]+\)\([0-9]+\)/AA/g'
2015/06/29(月)12:06:03.81.net
812名無しさん@お腹いっぱい。
をやってみましたがだめでした。なんでだろう。
manをみると2005年のものでした。
2015/06/29(月)12:21:46.28.net
813名無しさん@お腹いっぱい。
バージョンのせいかな
勉強になりました
ありがとうございました
2015/06/29(月)13:47:40.61.net
814名無しさん@お腹いっぱい。 [sage]
どのmanを読んでるのかわからん
2015/06/29(月)13:57:57.10.net
815名無しさん@お腹いっぱい。 [sage]
GNU sed では + が使える」というオチの予感がします。
# 今ちょっと調べてみるまで GNU sed で + が使えるとは知らなかった……
2015/06/29(月)14:26:49.95.net
816名無しさん@お腹いっぱい。 [sage]
2015/06/29(月)14:40:06.66.net
817名無しさん@お腹いっぱい。 [sage]
使ってるコマンドのオプションが違ってて使えなかったなあ
まあ最新のパッケージ落とせばよかったんだろうけど皆はどうしてる?
2015/06/29(月)19:01:07.47.net
818名無しさん@お腹いっぱい。 [sage]
2015/06/29(月)20:34:14.84.net
819名無しさん@お腹いっぱい。 [sage]
シェルスクリプトで株の発注のようなことはできませんかね?
証券会社にログインしフォーム入力して発注ボタン押すような・・
そんな言語じゃないと思うのですができたら人気出るかなあと
2015/06/29(月)21:17:14.01.net
820名無しさん@お腹いっぱい。 [sage]
2015/06/29(月)21:20:48.70.net
821名無しさん@お腹いっぱい。 [sage]
2015/06/29(月)21:26:58.24.net
822名無しさん@お腹いっぱい。 [sage]
2015/06/29(月)21:38:54.99.net
823名無しさん@お腹いっぱい。 [sage]
昔、シェルスクリプトでロト6の番号を出していたのはいい思い出
一度も当たらなかったけどな・・・
2015/06/29(月)21:41:19.11.net
824名無しさん@お腹いっぱい。 [sage]
2015/06/29(月)21:53:20.99.net
825名無しさん@お腹いっぱい。 [sage]
2015/06/29(月)22:08:23.46.net
826名無しさん@お腹いっぱい。 [sage]
ロト6、わたしも時々やっています。シェルスクリプトで番号を出すのは考えもしませんでしたw
>>821
>>824
>>825
ご親切にありがとうございました
grepとかのパイプ並列化されてると聞いたので、もしかしてなにかしら分からない理由で発注も早いのかなと
思って聞いてみました。
>>349や>>371は知りませんでした。勝手にシェルスクリプトっていうとブラウザレスのワンライナーをイメージしていました。
教えていただいた348や370を触ってみようと思います
2015/06/29(月)23:36:01.62.net
827名無しさん@お腹いっぱい。 [sage]
2015/06/30(火)00:21:38.40.net
828名無しさん@お腹いっぱい。 [sage]
2015/06/30(火)00:51:21.32.net
829名無しさん@お腹いっぱい。 [sage]
JavaScriptとか使われてたらwgetでは無理
2015/06/30(火)06:02:29.85.net
830名無しさん@お腹いっぱい。 [sage]
2015/06/30(火)07:54:44.40.net
831名無しさん@お腹いっぱい。
ソースを保存してgrepで試したのですがうまくいきませんでした。
なにかいい方法ありますか。
2015/06/30(火)10:54:23.76.net
832名無しさん@お腹いっぱい。 [sage]
2015/06/30(火)11:12:25.50.net
833名無しさん@お腹いっぱい。 [sage]
2015/06/30(火)12:12:09.26.net
834名無しさん@お腹いっぱい。 [sage]
firefoxのアドオンで使えるseleniumが便利なんじゃないかな
2015/06/30(火)12:24:48.15.net
835名無しさん@お腹いっぱい。 [sage]
2015/06/30(火)13:49:39.60.net
836名無しさん@お腹いっぱい。 [sage]
2015/06/30(火)13:50:38.46.net
837名無しさん@お腹いっぱい。 [sage]
2015/06/30(火)19:21:47.66.net
838名無しさん@お腹いっぱい。 [sage]
おじいちゃん。-exec .... +を知らなかった事を必死にごまかそうとしてもダメだよ。
765 名無しさん@お腹いっぱい。[sage] 2015/06/24(水) 15:44:35.63
-execだと見つかったファイルの数だけプロセスつくるんだよね?
xargsだとexecシステムコールの引数個数制限までは1個のプロセス作ってその引数に見つかったファイル全部渡すのかな?
2015/07/01(水)00:58:33.93.net
839名無しさん@お腹いっぱい。 [sage]
2015/07/01(水)01:13:29.53.net
840名無しさん@お腹いっぱい。 [sage]
つけなくても+が使えるみたいだ。
2015/07/01(水)07:46:12.63.net
841名無しさん@お腹いっぱい。 [sage]
2015/07/01(水)13:58:10.28.net
842名無しさん@お腹いっぱい。 [sage]
2015/07/01(水)14:36:35.81.net
843名無しさん@お腹いっぱい。 [sage]
あんまり相手しちゃいけない
2015/07/01(水)15:04:35.61.net
844名無しさん@お腹いっぱい。 [sage]
動いてしまうのはどうなのかな?と思ったんだ。
2015/07/02(木)08:18:40.41.net
845名無しさん@お腹いっぱい。
JSなページもいけるらしいが、実際やってみたら、サイトを開く、
ボタン押すなどは記録してくれるが、スクロールするとか、細かい
事は記録されなかった。画像をキャプチャしたいんだが無理の模様。
シェルスクリプトで書こうとして、LinksをJava対応とかにしてみた
ものの、努力実らず。。。
2015/07/02(木)18:33:26.44.net
846名無しさん@お腹いっぱい。
2015/07/02(木)18:41:44.19.net
847名無しさん@お腹いっぱい。 [sage]
最初はバカばかしく思えた、たとえばpythonでの
import re
のほうが、思想としては正しいような気がしてきた。
2015/07/02(木)19:10:07.26.net
848名無しさん@お腹いっぱい。 [sage]
aaa=$(( bbb + ccc ))
という表記の仕方と
aaa=$(( $bbb + $ccc ))
という表記の仕方、どちらも同じ計算結果が得られるんですが
どちらが正しいんでしょうか?どちらで書いても良い仕様なんでしょうか?
2015/07/02(木)23:42:14.95.net
849名無しさん@お腹いっぱい。 [sage]
2015/07/03(金)00:54:37.65.net
850名無しさん@お腹いっぱい。 [sage]
((aaa = bbb + ccc))
って書いた方がいい。この方が数値計算らしいね。
2015/07/03(金)05:34:00.18.net
851名無しさん@お腹いっぱい。 [sage]
2015/07/03(金)09:11:41.14(B0CP9/Q5n)
852名無しさん@お腹いっぱい。 [sage]
2015/07/03(金)09:48:26.01.net
853名無しさん@お腹いっぱい。
2回目以降に出てきた重複行をカットして出力です。それ以外はsortしないで元の順のまま出力。
2015/07/03(金)14:16:50.30.net
854名無しさん@お腹いっぱい。 [sage]
2015/07/03(金)14:50:45.06(B0CP9/Q5n)
855名無しさん@お腹いっぱい。 [sage]
.netの方で答えてあげて
2015/07/03(金)14:52:23.32(A2U8YBDtR)
856名無しさん@お腹いっぱい。 [sage]
http://www.linuxquestions.org/questions/linux-newbie-8/uniq-values-in-unsorted-file-4175471813/#post5001429
2015/07/03(金)14:44:25.08.net
857名無しさん@お腹いっぱい。 [sage]
2015/07/03(金)14:55:42.55.net
858名無しさん@お腹いっぱい。 [sage]
2015/07/03(金)15:20:13.81.net
859名無しさん@お腹いっぱい。 [sage]
if (count[] == 0) {
count[]++
}
}
2015/07/03(金)18:44:31.13.net
860名無しさん@お腹いっぱい。 [sage]
2015/07/03(金)19:39:34.12.net
861名無しさん@お腹いっぱい。 [sage]
2015/07/03(金)19:41:35.86.net
862名無しさん@お腹いっぱい。 [sage]
何も考えずにVBで同じようにやったらクソ遅かった
2015/07/03(金)20:13:46.43.net
863名無しさん@お腹いっぱい。 [sage]
2015/07/03(金)21:11:40.93.net
864名無しさん@お腹いっぱい。 [sage]
をやると、リダイレクト先のファイル名で保存されずにbarで保存されてしまう
リダイレクト先のファイル名で保存するにはどうすればできますか?
2015/07/04(土)20:45:32.11.net
865名無しさん@お腹いっぱい。 [sage]
2015/07/04(土)21:03:45.47.net
866名無しさん@お腹いっぱい。 [sage]
-Iで情報取得してgrep、sed、展開で抽出
2015/07/04(土)22:57:10.62.net
867名無しさん@お腹いっぱい。 [sage]
解決法はわからない
2015/07/04(土)23:36:06.98.net
868名無しさん@お腹いっぱい。 [sage]
2015/07/04(土)23:37:41.83.net
869名無しさん@お腹いっぱい。 [sage]
sedはめんどくさい
2015/07/05(日)00:24:31.19.net
870名無しさん@お腹いっぱい。 [sage]
2015/07/05(日)06:16:53.25.net
871名無しさん@お腹いっぱい。 [sage]
2015/07/05(日)08:51:57.76.net
872名無しさん@お腹いっぱい。 [sage]
リダイレクト先のファイル名を取得したいのに決め打ちしてどうするw
2015/07/05(日)09:11:05.08.net
873名無しさん@お腹いっぱい。 [sage]
nl | sort -k 2 | uniq -f 1 | sort | cut -f 2-
>>864
http://stackoverflow.com/questions/6881034/curl-to-grab-remote-filename-after-following-location
何か違和感が有るが、まあいいか
2015/07/05(日)11:13:12.10.net
874名無しさん@お腹いっぱい。
予定よりも相当早いペースで突き進んでるよ
ギリシャのこと笑ってられないかもしれない
潰れる会社も出るだろうし、失業者も出るかもしれない
アウシュビッツレベルのネタだからオリンピックどころじゃないかもしれない
私の勝手な想像だけどね
でもバレテルよと何年も前から言ってるのに今日もバカの一つ覚えの電気通信で嫌がらせ
だからみんながそれが答えなのね、世界中に暴露して聞いてみろってことなのね
ということで動きが止まらない方向になっている
揉み消すとか臭いものにふたをする犯罪者の心理行動しか取れないクズは終わりかもしれない
観光客がちょっと増えたと喜んでいる場合じゃないよ、知っている人間は日本なんかに来てないよ
事実は言った人間が悪いんじゃないよ、作った人間が悪いんだよ
知ってる人間は後悔しないためにも正しい行動をしたほうがいいよ
ダメなものは世界中誰が見てもダメなんだからね
2015/07/07(火)01:55:38.74.net
875名無しさん@お腹いっぱい。 [sage]
2015/07/07(火)17:07:44.73.net
876名無しさん@お腹いっぱい。 [sage]
${var#pattern}
みたいな使い方はできないのですか?
2015/07/11(土)02:16:43.69.net
877名無しさん@お腹いっぱい。 [sage]
2015/07/11(土)05:21:37.10.net
878名無しさん@お腹いっぱい。 [sage]
すみません、$ が抜けていました
どうやら zsh のデフォルトの仕様のせいで、
GLOB_SUBST オプションを有効にするか、${var#$~pattern} で望みどおりになりました
2015/07/12(日)06:30:34.52.net
879名無しさん@お腹いっぱい。 [sage]
2015/07/12(日)23:45:48.39.net
880名無しさん@お腹いっぱい。 [sage]
とか
2015/07/13(月)03:08:28.34.net
881名無しさん@お腹いっぱい。 [sage]
sed '/aaa/,$s/'"$f"'/bbbb/g'
2015/07/13(月)04:53:41.61.net
882名無しさん@お腹いっぱい。 [sage]
for f in
do
file_name="${f##*/}"
sed -e 's/foo/foo_$f/g' /hoge/hoge.txt> ${count}_hoge.txt
mv $f ${par_dir2}/${file_name}
count=$(($count + 1))
done
これはダメ
sed -e 's/foo/foo_"$f"/g'
もだめでした
なんでだろう?
2015/07/13(月)13:45:08.39.net
883名無しさん@お腹いっぱい。 [sage]
クォートの対応、良く見ろよ
sed -e 's/foo/foo_"$f"/g' ←じゃなくて
sed -e 's/foo/foo_'"$f"'/g'
な。' 'を一回閉じてから" "を開き直す。スペースを空けずに。
2015/07/13(月)13:50:39.03.net
884名無しさん@お腹いっぱい。 [sage]
2015/07/13(月)16:07:08.78.net
885名無しさん@お腹いっぱい。 [sage]
というか$fだけをダブルクォートでも問題ないのかな?
2015/07/13(月)17:05:32.16.net
886名無しさん@お腹いっぱい。 [sage]
2015/07/13(月)20:53:18.32.net
887名無しさん@お腹いっぱい。 [sage]
全部ダブルでええやん
2015/07/13(月)23:15:54.08.net
888名無しさん@お腹いっぱい。 [sage]
/aaa/,$ 文字列aaaとマッチする行から行末まで次のコマンドを適用
s/"$f"/bbbb/g シェル変数$fとマッチした文字列をbbbbに置き換えるコマンド
全体をダブルクォートしたら$sがシェル変数として解釈されちゃうからいやん
2015/07/13(月)23:41:43.94.net
889名無しさん@お腹いっぱい。 [sage]
2015/07/13(月)23:50:57.72.net
890名無しさん@お腹いっぱい。 [sage]
2015/07/14(火)03:14:11.34.net
891名無しさん@お腹いっぱい。 [sage]
何故でしょう。わかる方いますか
$ postmulti -i hogehoge -e destroy
postmulti: fatal: No instance named hogehoge
上のように、Noという文字列が出力されたら処理をしたいので
$ postmulti -i hogehoge -e destroy 2>&1 | grep No
$
とするが、ヒットしない。
2015/07/18(土)11:58:15.66.net
892名無しさん@お腹いっぱい。
* 何か間違えている。
前者は
$ postmulti -i hogehoge -e destroy >/dev/null
$ postmulti -i hogehoge -e destroy 2>/dev/null
で確認すれば良い。
2015/07/18(土)12:10:12.95.net
893名無しさん@お腹いっぱい。 [sage]
fdの1,2以外とか/dev/tty直接に出力されてるなら素通りの表示はされるはず。
なので、postmultiが出力がパイプの場合は出力を自分で抑制してるのかも。
2015/07/18(土)12:21:00.88.net
894名無しさん@お腹いっぱい。 [sage]
2015/07/18(土)12:29:23.71.net
895880 [sage]
>>893
$ postmulti -i hogehoge -e destroy >/dev/null
postmulti: fatal: No instance named hogehoge
$ postmulti -i hogehoge -e destroy 2>/dev/null
$
確認すると、こんな感じ
なので確実に2番ですよね
だが、ファイルに書き出しても
$ postmulti -i hogehoge -e destroy 2>output
$ cat output
なにもでない。
>>894
そうなんですか。
ちょっと調べてみます
2015/07/18(土)13:58:51.80.net
896名無しさん@お腹いっぱい。 [sage]
Linux で以下を実行すると output ファイルにエラーメッセージが
書き込まれている。
$ echo 'int isatty(int fd) { return 1; }' | gcc -xc -shared -o isatty.so -
$ LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH LD_PRELOAD=isatty.so postmulti -v -i hogehoge -e destroy 2>output
2015/07/18(土)14:55:40.11.net
897名無しさん@お腹いっぱい。 [sage]
ありがとうございます!
上のコード理解してきました。そういうことなのですね。
一応ソースも確認したけど、その通りでした
postfix-3.0.1: ./src/postmulti/postmulti.c
1684 if (isatty(STDERR_FILENO))
1685 msg_vstream_init(argv[0], VSTREAM_ERR);
1686 msg_syslog_init(argv[0], LOG_PID, LOG_FACILITY);
isatty()を外から騙せるか試行錯誤してますが、だめならそのまま
利用させていただきます!
2015/07/18(土)17:24:55.19.net
898名無しさん@お腹いっぱい。 [sage]
で実行すればいいかも。
expect -c 'spawn pstmulti -i hogehoge -e destroy ; expect eof' | grep No
2015/07/18(土)23:59:07.25.net
899名無しさん@お腹いっぱい。 [sage]
例文の方は正しいです。
2015/07/19(日)00:06:30.73.net
900880
まことに感謝です
2015/07/19(日)11:47:38.55.net
901名無しさん@お腹いっぱい。 [sage]
で、command 1とcommand 2のエラーレベルを取得数方法てありますか?
$?やPIPESTATUSではうまくいきませんでした。
2015/07/19(日)15:45:46.71.net
902名無しさん@お腹いっぱい。 [sage]
2015/07/19(日)16:44:41.05.net
903名無しさん@お腹いっぱい。 [sage]
といった具合に格納したいのですが、できそうですか?
思いつかないです
2015/07/19(日)19:00:45.99.net
904名無しさん@お腹いっぱい。 [sage]
error_evel=(${PIPESTATUS[@]})
var=$(cat hoge); rm hoge
2015/07/19(日)19:16:46.14.net
905名無しさん@お腹いっぱい。 [sage]
error_evel=$(echo "$var" | tail -1)
var=$(echo "$var" | sed '$d')
2015/07/19(日)20:37:20.22.net
906名無しさん@お腹いっぱい。
echo abc
}
# 1
res = "$(fun)"
# 2
res = `fun`
質問です。#1 と #2 は両方とも関数funの返り値を受け取って変数resへ代入していますが、
両方に特別な違いはあるのでしょうか?
見た目の好みの問題でどちらを使ってもよいものでしょうか?
2015/07/19(日)22:00:11.98.net
907名無しさん@お腹いっぱい。 [sage]
2015/07/19(日)23:16:03.23.net
908名無しさん@お腹いっぱい。 [sage]
$() は `` だから、"$(fun)" は "`fun`" で等価
違いは ’’はネストできないけど $() はネストできる
$ echo `date -r `pwd``
date: オプションには引数が必要です -- 'r'
Try 'date --help' for more information.
pwd
※これは echo $(date -r)pwd$()になってしまう
$ echo $(date -r $(pwd))
xxxx年 x月 x日 火曜日 xx:xx:xx JST
2015/07/19(日)23:26:38.65.net
909名無しさん@お腹いっぱい。 [sage]
hage
$ echo `echo `echo hage``
echo hage
後者は`echo `と``の中身がコマンドとして解釈されてこれは空っぽで、残ったecho hageが単純な文字列としてechoされるのかw
2015/07/20(月)05:43:37.07.net
910名無しさん@お腹いっぱい。 [sage]
hoge=$(grep foo /bar/bar2)
hoge2=${hoge%?}
としているのですけど、?だとwinで作られたテキストか確認しなければ怖いのです。
\r、\r\n、^M、^M$では消せなかったです。
sedやtr使えばいいのですが、変数展開のほうが速いので
変数展開で安心して使いたいのです。
どうすればうまくできますか?
2015/07/22(水)16:37:21.58.net
911名無しさん@お腹いっぱい。 [sage]
2015/07/22(水)17:20:17.87.net
912名無しさん@お腹いっぱい。 [sage]
ってやっておいて
hoge2=${hoge%$r}
2015/07/22(水)17:30:47.13.net
913名無しさん@お腹いっぱい。 [sage]
2015/07/22(水)17:43:05.00.net
914名無しさん@お腹いっぱい。 [sage]
sedを使った改行を挟んだ置換
abcd
efg
を
aaaefgに
sed '/abcd/N;s/abcd\n/aaa/g' hoge.txt
abcd
efg
を
aaa
bbbに
LF=$(printf '\\n_'); LF=${LF%_}
sed '/abcd/N;s/abcd\nefg/aaa'"$LF"'bbb/g' hoge.txt
2015/07/31(金)19:13:47.94.net
915名無しさん@お腹いっぱい。 [sage]
>>912のr=$(printf '\xd')は、r=$(printf '\r')や$(echo -e '\r')ではまずいのでしょうか?
\xdはどういう意味なのですか?
もし、LFをprintfで作るときには$(printf '\n')、echoで作るときには$(echo -e '\n')で大丈夫なのでしょうか?
2015/07/31(金)19:14:46.10.net
916名無しさん@お腹いっぱい。 [sage]
2015/08/02(日)06:43:49.16.net
917名無しさん@お腹いっぱい。 [sage]
うちのechoのmanみたら-e使えませんでした。
でも、bashのechoを見たらつかえました。
実感できました。
LFならxaになるんですね。
2015/08/02(日)13:55:04.46.net
918名無しさん@お腹いっぱい。 [sage]
2015/08/05(水)12:50:25.59.net
919名無しさん@お腹いっぱい。 [sage]
grep -m 1 知らない人?
2015/08/05(水)18:34:40.69.net
920名無しさん@お腹いっぱい。 [sage]
a
b
c
を
d
e
f
にしようと
LF=$(printf '\\n_'); LF=${LF%_}
sed '/abc/N;s/a\nb\nc/d'"$LF"'e'"$LF"'f/g' hoge.txt
をしたけど、ダメでした。
どうしてなんですか?どうすればいいのですか?
sedの改行から解放されると思ったのに。
2015/08/05(水)18:42:34.72.net
921名無しさん@お腹いっぱい。 [sage]
2015/08/05(水)18:54:13.85.net
922名無しさん@お腹いっぱい。 [sage]
脳メモリの節約
2015/08/05(水)19:18:30.92.net
923名無しさん@お腹いっぱい。 [sage]
賢いオプティマイザ誰か作ってくれないかな?
2015/08/06(木)03:47:34.20.net
924名無しさん@お腹いっぱい。 [sage]
2015/08/06(木)09:43:47.44.net
925名無しさん@お腹いっぱい。 [sage]
正しくは
head -n 1
新規作成スクリプトでは head -1 形式で記述してはいけない
2015/08/06(木)13:25:47.04.net
926名無しさん@お腹いっぱい。 [sage]
2015/08/06(木)13:48:36.71.net
927名無しさん@お腹いっぱい。 [sage]
2015/08/06(木)14:02:13.45.net
928名無しさん@お腹いっぱい。 [sage]
2015/08/06(木)14:08:49.62.net
929名無しさん@お腹いっぱい。 [sage]
実装を変えないと
2015/08/06(木)14:57:15.89.net
930名無しさん@お腹いっぱい。 [sage]
2015/08/06(木)15:33:08.88.net
931名無しさん@お腹いっぱい。 [sage]
2015/08/06(木)16:03:54.91.net
932名無しさん@お腹いっぱい。 [sage]
2015/08/06(木)16:32:44.92.net
933名無しさん@お腹いっぱい。 [sage]
2015/08/06(木)17:20:14.83.net
934名無しさん@お腹いっぱい。 [sage]
2015/08/06(木)17:37:16.74.net
935名無しさん@お腹いっぱい。
echo "a\nb\nc" | perl -0pe 's/a\nb\nc/d\ne\nf/m'
2015/08/06(木)17:41:57.71.net
936名無しさん@お腹いっぱい。 [sage]
2015/08/06(木)19:10:26.14.net
937名無しさん@お腹いっぱい。 [sage]
tr abc def < hoge.txt
2015/08/06(木)19:59:57.71.net
938名無しさん@お腹いっぱい。
2015/08/06(木)20:41:41.66.net
939名無しさん@お腹いっぱい。 [sage]
$ tr '\n' '' < hoge.txt | sed -r 's/(^|\x00)a\x00b\x00c\x00/d\x00e\x00f\x00/g' | tr '' '\n'
でもこの場合、連続する "a\nb\nc\n" の置換ができない。
a\nb\nc\na\nb\nc\n => d\ne\nf\na\nb\nc\n
2015/08/06(木)21:54:19.38.net
940名無しさん@お腹いっぱい。 [sage]
それが^b$だったらまた次の行を読み込み
それが^c$だったら、ってやったらいいんでないの?
というか、エディタで読み込んで置換した方が早いよ
2015/08/06(木)22:34:13.24.net
941名無しさん@お腹いっぱい。 [sage]
2015/08/07(金)00:33:41.83.net
942名無しさん@お腹いっぱい。 [sage]
2015/08/07(金)01:07:39.20.net
943名無しさん@お腹いっぱい。 [sage]
$ cat /tmp/elisp.el
(replace-regexp "a\nb\nc\n" "d\ne\nf\n")
(save-buffer)
(save-buffers-kill-terminal)
$ emacs hoge.txt -l /tmp/elisp.el
2015/08/07(金)01:44:15.54.net
944名無しさん@お腹いっぱい。 [sage]
aa
b
c
も変換しちゃう
2015/08/07(金)07:44:33.04.net
945名無しさん@お腹いっぱい。 [sage]
2015/08/07(金)10:05:54.63.net
946名無しさん@お腹いっぱい。 [sage]
動画のファイル名に「第x話」とか「#x」、「第x章」と付いてるやつを
ゼロパディングして桁数をそろえたいんだ
「第1話」→「第01話」
何かお勧めのコマンドある?
まあ普通に考えるとsedなんだけど誤変換怖いから
今は手動で変更してるんだ
2015/08/07(金)10:47:56.80.net
947名無しさん@お腹いっぱい。
echo "第2章" | perl -ne 'if (/第(\d)章/){printf "第%02d章", ""}'
第02章
echo "第12章" | perl -ne 'if (/第(\d+)章/){printf "第%02d章", ""}'
第12章
2015/08/07(金)11:05:53.06.net
948名無しさん@お腹いっぱい。 [sage]
第x話などのxの部分を切り出せるなら
case $num in
[1-9]) num=0$num ;;
0*) ;;
esac
echo $num
3桁なら
case $num in
[1-9]) num=00$num ;;
[1-9][0-9]) num=0$num ;;
0*) ;;
esac
echo $num
2015/08/07(金)11:31:16.58.net
949名無しさん@お腹いっぱい。 [sage]
2015/08/07(金)13:49:06.35.net
950名無しさん@お腹いっぱい。 [sage]
2015/08/07(金)13:52:45.45.net
951名無しさん@お腹いっぱい。 [sage]
1) 第x話や#x、第x章のxを切り出すよい方法がわからないのか、それとも
2) ゼロパディングする方法がわからないのか
もし1)なら、ゼロパディングする方法は関係ないし
もし2)なら、xを切り出す方法は関係ない
>核心の部分を飛ばしてどうするw
と言っている>>950は、したがって>>946さんの問題は1)だと解釈したことになる。
もし1)が「核心の問題」であるのなら
>>946さんはなぜ「ゼロパディングして桁数を揃えたい」と書いたのだろう?
ということで、>>946さんに何をしたいかもうちょっと具体的に言ってもらう必要があると思うよ。
2015/08/07(金)14:36:35.67.net
952名無しさん@お腹いっぱい。 [sage]
すでにそういう第x話とかの変換に対応した専用コマンドはないか?という質問だから。
答えは、「ない」
2015/08/07(金)15:09:50.57.net
953名無しさん@お腹いっぱい。
sed -n 's/ごにょ/ごにょ/p'
で変更部分だけ出力されるから、
大丈夫なら sed -i 入れて実行
2015/08/07(金)15:47:21.26.net
954名無しさん@お腹いっぱい。 [sage]
どんな場面で誤変換になるの?
2015/08/07(金)15:50:28.93.net
955名無しさん@お腹いっぱい。 [sage]
2015/08/07(金)17:03:38.05.net
956名無しさん@お腹いっぱい。 [sage]
2015/08/07(金)17:33:51.82.net
957名無しさん@お腹いっぱい。 [sage]
2015/08/07(金)19:52:08.40.net
958名無しさん@お腹いっぱい。 [sage]
2015/08/07(金)20:25:15.45.net
959名無しさん@お腹いっぱい。 [sage]
2015/08/07(金)21:15:22.11.net
960名無しさん@お腹いっぱい。 [sage]
:
第5章-ホゲホゲ34歳の不倫part1.mp4
第6章-ホゲホゲ34歳の不倫part2.mp4
:
とか??
2015/08/08(土)12:09:25.42.net
961名無しさん@お腹いっぱい。 [sage]
2015/08/08(土)19:30:56.99.net
962名無しさん@お腹いっぱい。 [sage]
先読み・後読みが使えるのは便利
2015/08/08(土)21:18:40.90.net
963名無しさん@お腹いっぱい。 [sage]
aaaaa bbbbb ccccc
#printf "ddddd " >> a.txt
#cat a.txt
aaaaa bbbbb ccccc
ddddd
#printf "eeeee " >> a.txt
#printf "fffff " >> a.txt
#printf "ggggg " >> a.txt
#cat a.txt
aaaaa bbbbb ccccc
ddddd eeeee fffff ggggg
なんで1回目の追記のときだけ改行が入っちゃうの? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
2015/08/09(日)07:15:54.88.net
964名無しさん@お腹いっぱい。 [sage]
2015/08/09(日)07:42:06.61.net
965名無しさん@お腹いっぱい。 [sage]
何をやりたいんだよ
なんでa.txtがどういう状態か分かるんだよ
2015/08/09(日)07:46:01.85.net
966名無しさん@お腹いっぱい。
2015/08/09(日)07:58:50.20.net
967名無しさん@お腹いっぱい。 [sage]
なんで?
2015/08/09(日)10:00:28.82.net
968名無しさん@お腹いっぱい。 [sage]
2015/08/09(日)10:04:18.10.net
969名無しさん@お腹いっぱい。 [sage]
2015/08/09(日)16:18:41.93.net
970名無しさん@お腹いっぱい。 [sage]
2015/08/09(日)18:08:05.24.net
971名無しさん@お腹いっぱい。 [sage]
みんなで風呂に過いるイメージだったけど、今は家風呂
個人の管理ってイメージだから、ユーザ=rootの時代だよね。
そう言う意味ではUNIXそのものの考え方をパーソナルに考え直す
という手間暇を惜しんだところが負けだと思うわ。
2015/08/10(月)12:25:15.29.net
972名無しさん@お腹いっぱい。 [sage]
2015/08/10(月)20:06:59.81.net
973名無しさん@お腹いっぱい。 [sage]
2015/08/11(火)01:39:01.94.net
974名無しさん@お腹いっぱい。 [sage]
androidをUNIXベースと考えるかどうかで勝敗は変わるんじゃないの?
2015/08/11(火)08:56:44.41.net
975名無しさん@お腹いっぱい。 [sage]
2015/08/11(火)11:03:46.05.net
976名無しさん@お腹いっぱい。 [sage]
2015/08/11(火)13:12:49.80.net
977名無しさん@お腹いっぱい。 [sage]
2015/08/11(火)13:15:39.19.net
978名無しさん@お腹いっぱい。 [sage]
2015/08/11(火)13:41:34.72.net
979名無しさん@お腹いっぱい。 [sage]
2015/08/11(火)22:28:27.88.net
980名無しさん@お腹いっぱい。 [sage]
sudoは答えの一つだと思うがどうか?
2015/08/12(水)01:15:37.26.net
981名無しさん@お腹いっぱい。 [sage]
そりゃrootしか使わんわ
でもWindowsとかアドミン権限じゃないユーザで使ってる人結構多くて
いい意味でびっくりすることがある
2015/08/12(水)07:34:06.58.net
982名無しさん@お腹いっぱい。 [sage]
2015/08/12(水)10:29:07.02.net
983名無しさん@お腹いっぱい。 [sage]
管理者がいないから自分が管理者なだけ
2015/08/12(水)11:18:27.54.net
984名無しさん@お腹いっぱい。 [sage]
んなこたーない
2015/08/12(水)11:23:24.46.net
985名無しさん@お腹いっぱい。 [sage]
2015/08/12(水)12:47:36.66.net
986名無しさん@お腹いっぱい。 [sage]
2015/08/12(水)13:36:17.12.net
987名無しさん@お腹いっぱい。 [sage]
.cshrcってターミナル起動した時に読み込まれなくなってしまいますか?
2015/08/12(水)14:25:02.72.net
988名無しさん@お腹いっぱい。 [sage]
↓
#になってないと実行できないコマンドだった
↓
コマンド打ち直す
最初から#
↓
コマンド打つ
↓
確実に成功
後者のほうが効率がよい
2015/08/12(水)14:54:50.56.net
989名無しさん@お腹いっぱい。
(基本仕様)
・コマンドとして実行できる.(シェルコマンドである.)
・ユーザーが10000以上99999以下の5桁の数字を入力する.
・その数字を7で割って1余り,かつ13で割って2余った場合は Daikichiと表示する.
・それ以外で,13で割って2余った場合は Chuukichiと表示する.
・それ以外で,7で割って1余った場合は Shoukichiと表示する.
・それ以外の場合は Hazureと表示する.
・入力した文字が10000以上99999以下の数字以外の場合はエラーメッセージを表示する.
・できる人は,コマンドライン引数でDaikichiなどの文字を変更できるようにする.
(ポイント)
☆シェルコマンドにするには,スクリプトの最初に(#!で始まる)おまじないを書く.
☆標準入力から文字列を入力するには read を用いる.
☆コマンドラインの引数は,$@に格納されている.(その要素は ...)
☆四則演算には $(( )) コマンドが使用できる.(ただし,整数しか扱えない.)
誰かわかるひとお願いします
2015/08/12(水)15:03:47.83.net
990名無しさん@お腹いっぱい。 [sage]
来年はちゃんと授業聞こうな
2015/08/12(水)15:54:32.72.net
991名無しさん@お腹いっぱい。 [sage]
2015/08/12(水)17:01:02.35.net
992名無しさん@お腹いっぱい。 [sage]
2015/08/12(水)17:11:49.67.net
993名無しさん@お腹いっぱい。
> 私は講師です。
講師CCO騙るにしてもこれは酷いw
遊びたかったら人狼逝け
2015/08/12(水)17:24:59.92.net
994名無しさん@お腹いっぱい。 [sage]
2015/08/12(水)18:07:03.66.net
995名無しさん@お腹いっぱい。
2015/08/12(水)20:18:03.71.net
996名無しさん@お腹いっぱい。 [sage]
結果だけならどうせバレない
2015/08/12(水)20:45:32.93.net
997名無しさん@お腹いっぱい。 [sage]
なんで?
2015/08/12(水)21:26:42.33.net
998名無しさん@お腹いっぱい。 [sage]
2015/08/12(水)22:53:02.21.net
999名無しさん@お腹いっぱい。 [sage]
2015/08/13(木)00:25:40.34.net
1000名無しさん@お腹いっぱい。 [sage]
2023/11/23(木)19:54:52.67(mNysEr30Y)
1001過去ログ ★
[過去ログ]