- 1 名前:シェルスクリプトライター mailto:sage [2011/12/10(土) 20:06:40.38 ]
- シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。 □お約束 ・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashなので特に注意。 FreeBSDユーザは/bin/shの正体がashなので注意。 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。 src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/ heirloom.sourceforge.net/sh.html ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルスクリプトのことをシェルってゆーな ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも RubyやPerlの方が適した仕事には素直にそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 前スレ シェルスクリプト総合 その18 hibari.2ch.net/test/read.cgi/unix/1308195527/ 次スレは >>970 で。
- 4 名前:名無しさん@お腹いっぱい。 [2011/12/10(土) 23:18:47.00 ]
- ワンライナーかな、とも思ったがシェルでワンライナーはそれほど重視されないしな…
- 5 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/11(日) 00:11:26.91 ]
- 相手すんなよ。
- 6 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/11(日) 16:42:39.40 ]
-
1000 :名無しさん@お腹いっぱい。 :sage :2011/12/11(日) 16:41:38.19 -z って変数が空か入ってるかぢゃ無いのかよ
- 7 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/11(日) 16:51:14.38 ]
- >>6
変数が未設定か設定済みかをテストしたい時は、 test -z "${var+X}" を使う。varに空文字列がセットされていても「設定済み」と判定する。
- 8 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/11(日) 16:59:56.87 ]
- なるほどぉ。ためになるなぁ。
でもさ、スクリプトの場合あらかじめunsetで初期化しない? unsetを初期化と呼ぶのかどうかさえ知らんのだけど……。
- 9 名前:名無しさん@お腹いっぱい。 [2011/12/13(火) 15:30:20.06 ]
- 冷やすとリングはワンタイマーだよね?
- 10 名前:名無しさん@お腹いっぱい。 [2011/12/13(火) 17:16:35.40 ]
- here string は PowerShell用語だったという記憶。
- 11 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/13(火) 18:30:59.09 ]
- bashのmanにも記載はあるが、何処のどいつが言い出したのかは分からんね
辿っていけば時期は分かるだろうが、PowerShellに関しては全く知らん
- 12 名前:名無しさん@お腹いっぱい。 [2011/12/13(火) 20:54:11.16 ]
- bashのhere string...
へー << じゃなくて <<< を使うんだな。 $ cat <<<XXX XXX
- 13 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/16(金) 10:58:47.04 ]
- つまりドザか
- 14 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/17(土) 12:28:51.47 ]
- Powershellより昔の用語じゃないか?
ヒアストリングっていまいち使いどころがわからんけど。
- 15 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/19(月) 00:03:04.76 ]
- ブロックコメントアウトには常用するよ
#!bash :<<'#COMMENT' echo $PATH #COMMENT
- 16 名前:名無しさん@お腹いっぱい。 [2011/12/19(月) 00:05:06.81 ]
- それはhere stringじゃなくてhere documentじゃねーの?
- 17 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/19(月) 00:10:56.53 ]
- ごめん、ヒアストか。たしかに使いどころがないというか、これくらいしか用例知らない。
awk <<< "$*" '{ for (i = 1; i <= NF; i++) { print $i } }'
- 18 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/19(月) 06:48:52.85 ]
- >>15
それはシェル内部で添付ファイル作られるから動作が無駄だな
- 19 名前:名無しさん@お腹いっぱい。 [2011/12/19(月) 08:25:18.78 ]
- grep -q 'pattern' <<< 'string'
とか使えると思うけど
- 20 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/19(月) 08:36:39.21 ]
- >>18
その添付ファイル名を知る方法ってない? 終了時に自動で美しく消されるなら使い捨てのawkやsedを埋め込むのに使いたい。 mktempとか面倒だし本題からずれて見難いしさ。
- 21 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/19(月) 09:20:27.18 ]
- >>20
exec 3<< EOF hoge EOF cat /dev/fd/3 とか?
- 22 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/19(月) 10:14:15.89 ]
- 「無駄だな」マンw
- 23 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/19(月) 15:54:24.34 ]
- シェルスクリプトライターなら、ソースで語れよ
無駄無駄だけじゃ、何も進まないぜ(キリッ
- 24 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/19(月) 16:09:37.29 ]
- >>15 については、コメントアウトのつもりでも
実際には内部でtmpファイルが作られるという動作が実行され、 コメントになっていない、ということを >>18 が言ってるんだろ? 単に書き方が無駄だということじゃなくて、 根本的にコメントになっていないということ。
- 25 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/19(月) 17:25:20.99 ]
- csh, commdnd.comでさえgotoがあるのにね。
cshの非実行部は構文解析されるんだっけ?
- 26 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/22(木) 23:31:09.41 ]
- eucのサーバにおいて、sjisのファイルをcatすると文字化けするのですが、
対処方法としてはどうすればいいでしょうか?
- 27 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/22(木) 23:37:38.88 ]
- nkf -e
- 28 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/23(金) 01:09:38.83 ]
- >>27
iconv使えよ・・・
- 29 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/23(金) 09:09:05.64 ]
- iconvはエラーで中途終了しちゃうからnkfの方が推奨。
(まあ、-sもあるとは言え)
- 30 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/23(金) 10:17:10.53 ]
- >>29
つiconv -c オプション
- 31 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/23(金) 11:13:30.90 ]
- 半角文字とか記号とかが混じったデータだと、iconvじゃ変換できないってことがあった
日本語ならnkfの方がまだ分があるって気がする
- 32 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/23(金) 11:32:03.95 ]
- sjisじゃなくてcp932でもそうなるならiconvのバグ臭いが
- 33 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/23(金) 12:23:33.56 ]
- >>30
-c オプションでも解決はしないので nkfお勧め
- 34 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/23(金) 18:10:27.10 ]
- -cのないiconvもあるよな…cygwinだっけか…(死亡フラグ
- 35 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/24(土) 02:09:13.88 ]
- そもそもcygwinじゃデフォルトで入らないしnkfのパッケージもないから
入れてたpythonでフィルタ書いて使ってる
- 36 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/24(土) 02:52:14.20 ]
- 初歩的な質問なのですが、>>26の「eucのサーバ」ってどういう意味ですか?
サーバーの設定で文字コードって指定できるんですか?
- 37 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/24(土) 03:18:19.75 ]
- サーバーのロケール設定が euc ってことじゃね?
- 38 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/24(土) 03:33:21.59 ]
- 別に i18n で euc を指定していようと、Terminal で sjis を指定してれば
文字化けだけは防げると思うよ。 文字化けだけは。
- 39 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/24(土) 08:59:26.03 ]
- >>35
make一発でコンパイルできるやん # Makefileにinstall targetがないけどw
- 40 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/24(土) 09:07:08.00 ]
- iconvは自動判別してくれないよね?
- 41 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/25(日) 00:54:50.02 ]
- >>38 が正解
間違っています >>39
- 42 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/25(日) 01:07:20.68 ]
- >>41
えっ!?
- 43 名前:名無しさん@お腹いっぱい。 [2011/12/26(月) 01:28:47.74 ]
- ちょっとスクリプトを初めてちゃんと書いてみたので評価して欲しい。特にループ部分は他のやり方があると思う。
内容は天気表示スクリプトで使いかたは第1引数に、 weather.yahoo.co.jp/weather/jp/13/4410/13101.html などのYahooのかなり限定されたURLを打ち込んで使う。 [Bash] weather_yahoo - Pastebin.com pastebin.com/BxfbhQFd curlじゃなくてaria2cは好みで使ってみた。 一部文字もユニコードで絵文字部分を使っているのでフォントや文字コードによっては文字化けが発生多発する思います。 最初のHTMLからの行の抜き出しはハードコーディングしないほうがいいと思うけど、構造自体変わったら元も子もないし、面倒でやめてしまった。
- 44 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/26(月) 07:58:45.68 ]
- 後で使うなら別だけど、
いちいち変数に入れずに、そのままアウトプットしちゃえばいいんじゃないの?
- 45 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/26(月) 08:52:51.00 ]
- >>43
> #! /bin/bash 出直しな。
- 46 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/26(月) 09:05:07.67 ]
- そういえばむかし圧縮形式ごとのオプションが面倒で全部kaitoってスクリプトにしてカレントにディレクトリつくって解凍するようにしたらいいんじゃないかと思ったけど、結局オプションを覚えてしまった
- 47 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/26(月) 09:48:59.59 ]
- >>43
#! /bin/sh wget -O - --quiet "$1" \ | sed -n '149,163p' \ | sed -r '0~2d s/.*>([^<]+)<.*/\1/ s/晴れ/ / s/曇り/ / s/弱雨/ / s/湿雪|乾雪|みぞれ/ /' \ | tr '\n' ' ' \ | awk '{ if ($7 == $8) $8 = "〃" if ($7 == $8) $8 = "〃" if ($6 == $7) $7 = "〃" if ($5 == $6) $6 = "〃" if ($4 == $5) $5 = "〃" if ($3 == $4) $4 = "〃" if ($2 == $3) $3 = "〃" if ($1 == $2) $2 = "〃" printf "|--+--+--+--+--+--+--+--|\n\ |00|03|06|09|12|15|18|21|\n\ |--+--+--+--+--+--+--+--|\n\ |%s|%s|%s|%s|%s|%s|%s|%s|\n\ |--+--+--+--+--+--+--+--|\n", $1, $2, $3, $4, $5, $6, $7, $8}'
- 48 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/26(月) 10:29:15.47 ]
- >>46
7zがそんな感じになってるね。
- 49 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/26(月) 11:44:34.94 ]
- そしてlibarchive化された FreeBSD の tar もそんな感じになんでもツールに
- 50 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/26(月) 11:52:54.12 ]
- 最近のlinuxのtarもzやjやJなしで解凍してくれるよな。
まあ圧縮するときにどうせ付けないといけないから結局覚えてしまうんだけど。
- 51 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/26(月) 23:59:53.81 ]
- >>47
前時刻と同じかどうかのチェックと出力はまとめて |awk '{for (i=1;i<9;i++){printf "|%s",$i==tmp?"〃":$i;tmp=$i};print "|"}' としたい気分、スレ違い失礼
- 52 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/27(火) 02:06:11.94 ]
- あれこれ覚えられない俺的には、tarが自動で何でも伸長して展開してくれる方がありがたい
- 53 名前:ss [2011/12/27(火) 06:20:47.96 ]
- www.nicovideo.jp/watch/sm16529183
- 54 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/30(金) 18:26:14.20 ]
- 引数のうち、-で始まるものを除いた個数を数えるにはどうすればいいでしょうか?
a.sh -a -b c d e => 3
- 55 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/30(金) 18:39:18.15 ]
- >>54
#! /bin/sh manko=0 for chinko in $@ do if [ `echo $chinko | grep -v ^-` ] ; then manko=`expr $manko + 1` fi done echo $manko
- 56 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/30(金) 18:52:22.91 ]
- >>55
"$@" の中に特殊記号とかスペースとか入ってたら駄目。 forとかでループしたりせずに一発でできる方法を想定してます。
- 57 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/30(金) 18:57:38.49 ]
- n=0
for a in "$@";do case "$a" in -*) ;; *) n=`expr $n + 1` ;; esac done echo $n
- 58 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/30(金) 18:58:18.36 ]
- > forとかでループしたりせずに一発でできる方法を想定してます。
ねーよ。
- 59 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/30(金) 18:59:04.62 ]
- 何でfor文周りたらいかんのかその理由を詳しく。
sedで一文でできたとしても下のレイヤではいくらでもfor文回ってるだろうに。
- 60 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/30(金) 20:54:28.27 ]
- >>56
そういうのはUNIX系OSとは非常に相性が悪いので、至れり尽くせりのMFCとかを使うほうが捗るよ
- 61 名前:54 mailto:sage [2011/12/30(金) 21:07:19.02 ]
- >>57さんのを使わせてもらいます。ありがとうございます。
ちなみに>>56は別人なので。
- 62 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/30(金) 21:09:20.57 ]
- むう。ID表示しない板ってのはややこしいな。
- 63 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/30(金) 21:14:09.51 ]
- ていうかウンコとかチンコとかマンコとかオッパイとか、やらないか
- 64 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/30(金) 23:59:08.23 ]
- >>56 を上司に提出したら殴られました。
なんで…
- 65 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/31(土) 00:09:53.64 ]
- それは暴力事件かパワハラだから警察に通報したらいいと思うぞ。
- 66 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/31(土) 06:39:40.52 ]
- なぜgetoptsを誰も利用せんの?
- 67 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/31(土) 08:53:32.92 ]
- >>66
俺は単純なものとか、拡張する予定が無いときはつかわないなぁ それに複雑な処理をするならば、RubyなりPerl使った方が簡単とかさ
- 68 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/31(土) 09:07:33.56 ]
- >>67
>>66 は >>54 の場合について言ってるんだろ?
- 69 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/31(土) 15:02:13.88 ]
- >>66
こんな便利なものが! getoptsを利用すれば、そもそも -で始まるものを除いた個数を数える必要もない ことがわかりました。これで行きます。 まさに、forとかでループしたりせずに一発でできる方法ですね。
- 70 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/31(土) 15:39:18.97 ]
- >69
- 71 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/31(土) 15:44:42.43 ]
- チンコもマンコも使わなくていいって事ですね。
でもちょっと寂しいです。
- 72 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/31(土) 16:46:43.68 ]
- >>68
おおッ。気付いてませんでした
- 73 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/31(土) 16:54:05.71 ]
- getopts使ってもループは要ると思うが…
- 74 名前:名無しさん@お腹いっぱい。 [2012/01/06(金) 01:39:38.05 ]
- あるプロセスを起動して、その標準出力から100行分の入力をもらったら、
そのプロセスを自動的に殺すようなスクリプトは書けますでしょうか? または、あるプロセスを100秒だけ起動して、その後自動的に強制的に殺すこと は可能でしょうか。
- 75 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 02:49:26.47 ]
- >>74
>あるプロセスを起動して、その標準出力から100行分の入力をもらったら、 >そのプロセスを自動的に殺すようなスクリプトは書けますでしょうか? あるプロセス | head -n 100 でいいんでねえの? >または、あるプロセスを100秒だけ起動して、その後自動的に強制的に殺すこと >は可能でしょうか。 あるプロセス & sleep 100 kill -9 あるプロセスのプロセスID でいいんでねえの?
- 76 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 07:22:26.85 ]
- >>75
$! 使えよ
- 77 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 13:58:48.37 ]
- >>75
上の方法はあるプロセスが101行目を出力しようとするまで生きてないか?
- 78 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 15:00:15.02 ]
- 困るの?
- 79 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 15:01:39.72 ]
- もともとの仕様は満たしてないな。
困るかどうかは>>74に聞かないとわからん。
- 80 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 19:01:28.82 ]
- $!って、拡張機能だったかと
- 81 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 19:36:33.32 ]
- ボケるならもうちょっと面白いの頼む
- 82 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 23:10:50.34 ]
- どうせ学校の宿題だろ
そんなもん、動きゃいいんだよ
- 83 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 23:23:54.66 ]
- ボケてないよ。
- 84 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 09:35:59.68 ]
- ボケがウケなかったからって開き直らなくていいよ
- 85 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 10:56:05.85 ]
- >>75
ありがとうございます。 最初の問題については、たとえ延々と最初のプロセスが出力をたれ流していても、 パイプがなくなれば自動的に殺されるんですね。 後者の問題の場合、事前にプロセスIDが分からないのが問題なのですが、 シェルで、起動した命令のプロセスIDを取得する方法があるのでしょうか?
- 86 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 11:44:27.31 ]
- >>85
だから $! だって >>76 が回答してるだろ
- 87 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 15:13:56.59 ]
- >>76 も >>86 も、なぜこんな簡単なサンプルスクリプトさえ提示していただけないのでしょうか。
あるプロセス & hoge=$!; sleep 100; kill -9 $hoge
- 88 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 15:30:29.18 ]
- >>87
変数が無駄だな sleep 100; kill -9 $! だけで桶。 あと、>>76 の回答でわからない人間にはサンプルを示しても無駄。
- 89 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 15:41:35.40 ]
- その $! に入ってるプロセスIDは、Sleep のものだとわかった上で言ってるのでしょうか…
- 90 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 15:43:03.63 ]
- >>89
わかってないのはオマエ sleepのプロセスIDは $! に入らない。
- 91 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 15:45:16.77 ]
- 確かに、>>89 みたいなこと言ってる奴にサンプル示しても無駄だな。
正解者に間違った指摘する >>89 とかは書き込み自粛してくれ
- 92 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 15:49:41.76 ]
- 「バッググランドで実行された」 直前のプロセスID…だろw
>>88 で桶。
- 93 名前:89 mailto:sage [2012/01/07(土) 15:55:44.03 ]
- 自粛はしない。
すっげぇ数の訂正レスがついて嬉しい。ありがとう。
- 94 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 19:01:59.74 ]
- >>87-93
自作自演(・A・)イクナイ!!
- 95 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 19:02:53.77 ]
- ばーれたか
- 96 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 19:42:18.58 ]
- 普段シェルbashとか使用しませんが
ファイルにある特定の文字でファイルを分割したいと考えています 何とか調べて 例えばkiritoriと言う文字の箇所からsample.txtを2つに分割するのに grep -n kiritori sample.txtで行番号がわかりますので split -ln sampl.txtによりxaa,xabの二つのファイルに分割することがわかりました ここでお尋ねしたいのですが grepとsplitをまとめて処理するためにはnをsplitに引き渡す方法がわかりません どうかよろしくお願いいたします 又他の方法が有りましたらお教えください
- 97 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 20:12:54.18 ]
- sed '1,/kiritori/{ w xaa
d }' sample.txt > xbb
- 98 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 21:06:49.01 ]
- >>97
早速のレス有難う御座いました。 おかげでファイルを分割できるようになりました cutで行番号のみ抜き出したり sedは文字変換のみの認識しかなかったりで にわかもんはあなたのスクリプト見ただけで すごいなと言う感想のみです たまには勉強します 有難う御座いました
- 99 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 17:43:52.18 ]
- bashのことで質問させてください。
dateでYYYYMMを取得してきます。(例:201201) 1月から9月の場合には0を消去して、YYYYMで表示させたいのです。(例:20121) 自分でも一応下のようにして出来たのですが、もっと簡単に作る方法はないでしょうか? lm=`date "+%Y%m"` ll=`echo ${lm}|cut -c 1-4` mm=`echo ${lm}|cut -c 5-6` if [ ${mm} -lt 10 ];then mm=`echo ${mm}|sed s/0//` fi lm=${ll}${mm} echo ${lm}
- 100 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 17:47:39.30 ]
- >>99
date +%Y-%m | sed s/-0//
- 101 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 17:49:53.71 ]
- >>100
それ、10月以降が駄目だろw date +%Y%m | sed 's/-0//; s/-//'
- 102 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 17:51:50.20 ]
- >>100-101
自演乙 おちつけ date +%Y-%m | sed 's/-0//; s/-//'
- 103 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 17:58:24.55 ]
- >>100-102
おぉ、もう返答が。 そうか、消したい0の前に何か付け足すことで限定すれば良いんですね。 ありがとうございました。
- 104 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 18:03:08.42 ]
- >>99
せっかくbashならdateコマンド以外、内部コマンドだけでもできるよ。 a=($(date +'%Y %m')) echo ${a[0]}${a[1]#0}
|

|