Google Apps Scriptで日付をフォーマットしたいがわからないUtilities.formatDateを使うのはわかるが、どんな風にかけばよいかそんな疑問にお答えします。本記事の内容日付型を文字列にする方法変換した … 何かいい案を頂けないでしょうか? ./XXX.sh 20031112 部分がわからないです。, Unix ではファイル記述子というのがあって、番号、多くの場合 0, 1, 2 が使われます。0は入力、1は普通のメッセージ出力、2はエラーメッセージの出力というように使い分けされています。 私はLinux上で動作するシェルスクリプトを持っており、この呼び出しを使って昨日の日付をYYYY-MM-DD形式で取得します:, それはほとんどの場合動作しますが、スクリプトが昨日の朝、 2013-03-11 0:35 CDTで実行されたとき、 "2013-03-09"ではなく"2013-03-09"返され2013-03-11 0:35 CDT 。, おそらく、夏時間(昨日から始まった)は責任を負うことでしょう。 "2013-03-09" 2013-03-09 23:35 CST日2013-03-09 23:35 CST 2013-03-11 0:35 CDTは"2013-03-09" 2013-03-09 23:35 CST日に2013-03-09 23:35 CSTれた"2013-03-09"の結果につながった"2013-03-09" 。, Linux上でbashを使って昨日の日付を取得するには、DSTで安全な方法はありますか?, ところで、スクリプトが毎日00:35に実行されている場合(crontab?を使用している場合)、DSTの変更がその時間になった場合に何が起きるかを尋ねる必要があります。 スクリプトは実行できないか、場合によっては2回実行される可能性があります。 しかし、 cron現代的な実装は、この点では非常に巧妙です。, タイムゾーンを操作することは、時計を数時間変更することで可能です。 夏時間のために、24時間前は、今日または昨日の前日にすることができます。, 昨日は20〜30時間前だと確信しています。 どれ? まあ、今日ではない最新のもの。, echoコマンドで使用される-eパラメータはbashでは必要ですが、kshでは使用できません。 kshでは、-eフラグなしで同じコマンドを使用できます。, スクリプトをさまざまな環境で使用する場合は、#!/ bin / kshまたは#!/ bin / bashを使用してスクリプトを開始できます。 \ nを改行で置き換えることもできます:. 興味があって以下のシェルで検証してみました。 fi Linuxにあるdateコマンドは、GNUのShellutilsの中に入っているものなので、HP-UXにあるdateコマンドとは別物です。 これをe...続きを読む, お世話になります。 exprだと19秒ですが、$(( 演算 )) だと10秒程度なので、演算が多くなれば確かにexprは不利ですね。, bashをご使用と判断して よろしくお願いいたします。, man dateに書いてあります。 A=`echo "$1" | sed 's/[^0-9]//g'` 2) OSがSolaris8なのでdateがLinux版と違うのでしょうか・・・, 「文字列 日付」に関するQ&A: エクセル 複数条件での検索を関数を使って解決したいです。, 「文字列 Ruby」に関するQ&A: SQL文のwhere条件文で使う <> の意味はなんですか, 「Python 言語」に関するQ&A: 初心者がディープラーニングのプログラムを組むには?, 「Python 文字列」に関するQ&A: HP作成にあたって…Java、C言語どちらが実用性がある?, 世の中の成功している男性には様々な共通点がありますが、実はそんな夫を影で支える妻にも共通点があります。今回は、内助の功で夫を輝かせたいと願う3人の女性たちが集まり、その具体策についての座談会を開催しました。, スクリプトのエラー「unexpected EOF while looking for matching `'」の解決法は? #!/bin/bash 現実には11/31は無いのでエラーになってほしいのですが・・・ 第3引数は 日付のフォーマットチェック(YYYY/MM/DD以外はエラー) 09:19:19.259990000 *$/\1/' then echo YYYY/MM/DD形式の日付データ どのようにやるのでしょうか?, Solaris標準のdateコマンドではできません。 linux - 変数 - シェルスクリプト 日付 フォーマット 変換 Linux上のbashで昨日の日付を取得する、DST-safe (5) 書式を変更したければmanで調べてください。, 時刻フォーマットの編集方法について 第2引数は 文字列が "YES" か "NO"でなければエラー ではなく、 現在の日付: 20060511 res=$(( $str + 1 )) その日付の1日前の日付を取得するためにはどうしたらよいのでしょうか? str:ファイル内のテキスト(数値文字列) Linuxにあるdateコマンドは、GNUのShellutilsの中に入っているものなので、HP-UXにあるdateコマンドとは別物です。 これに関してはどうしようもないのでしょうか・・・, 回答ありがとうございます。 参考URL:http://www.unixguide.net/hp/faq/5.13.2.shtml, あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。 date '+%H:%M:%S.%N' else echo エラー 上記、ご存知の方がいればご教示いただきたく存じます。 12357 例: ※ 入力フォームに書いている時はASCIIと日本語の判別がし易いけど回答見るとわかり難いですね。後ろの例での結果57とy/0123456789/の数字部分が日本語です。, いつも拝見させていただいております。今回初めて投稿させて頂きます。  http://www.gnu.org/software/shellutils/shellutils.html i=0 Linuxのコンソール上で res=$(( $str + 1 )) (例) echo abcXYZ12357defghi | sed -e 's/^.*XYZ\([0-90-9]*\). ご存知の方がいたら、ご教授お願いできないでしょうか。どうか宜しくお願い致します。, HP-UX標準であるdate(1)コマンドでは、無理だと思いますよ。 $ ./test.sh then echo YES か NO exit date '+%H:%M:%S.%N' HP-UXで13ヶ月前をコンソール表示させるためにはどのようにコマンドを打てばいいのでしょうか。 例) 現在ちょっとこまったことがありご質問させて頂きました。 何も囲まないか、"・・・"で囲むかです。, ※各種外部サービスのアカウントをお持ちの方はこちらから簡単に登録できます。 09:18:56.929345000 echo abcXYZ123defghi | sed ... あれは初めてシェルを作った時のことでした。bashで試行錯誤しながら意味不明なコマンドをたくさん書いているときに、仕様変更。起動引数に日付を渡してくれ、その引… str=$(( str + 1)) Y="b" 取得する日:20060501, hpの技術情報によると、HP-UXなら参考URLの方法が使えるみたいです。 date '+%H:%M:%S.%N' date -d '1 days ago' Using $((str + 1)) -------------------- 結局のところシェルのみでどうにかする方法は 単純に`expr yyyymmdd - 1`のような計算では20121001 → 20121000のようになり、 特定の月の場合は31をエラーとかしてもいいのですが 同じように試してみましたが、20031131は正となってしまいますね。  sh_utils-2.0 This is a package of small shell programming utilities while [ $i -lt 10000 ]  http://www.gnu.org/software/shellutils/shellutils.html date '+%H:%M:%S.%N' 1 シェルスクリプトである文字列から一定の文字列を取得する方法 2 シェル変数でyyyymmddをいれたいのですが… 3 unixシェル内での日付計算 4 unixシェル内での日付計算 5 cシェルの文字列操作について 6 bシェルでのユーザパスワード変更 従いまして、"command > /dev/null 2>&1" とすることで command からの全てのメッセージは(/dev/nullに)捨てられる、つまり、エラーがあろうがなかろうが出力されるメッセージは何もないことになります。, UNIX(今使ってるのがHP-UX11i)上のバッチシェルで、 何か方法はないでしょうか。 お客様の許可なしに外部サービスに投稿することはございませんのでご安心ください。, C言語で分からない所が有ります。オススメの本は有りますか?他、rubyに鞍替えした方が良いか。, エクセルに入力された日付「S40.07.20」(文字列)を西暦の日付データに修正したい, http://docs.sun.com/db/doc/816-3518/6m9ptvqth?l= …, http://www.linux.or.jp/JM/html/gnumaniak/man1/da …. 日付として計算されません。 と打つと13ヶ月前の年月が表示されるのですが、HP-UXのコンソールで同じように打ってもコマンドが間違っていて、思ったように答えが返ってきません。 A=`date +%Y/%m/%d -d "$3"` ですから、Linuxと同じようにしたいのでしたらGNU Shellutilsをインストールされてみたらどうでしょうか? ※具体的にいえば、Apacheが出力しているログ内の 行いたいのですが、JAVAなどでコーディングしないと駄目でしょうか?? 以下の様な時刻(CLF の時刻の書式)を done だと思います。 3) 09:19:00.302748000 #!/bin/bash 興味があって以下のシェルで検証してみました。 do str=1 シェルスクリプトでファイル内のテキスト(数値文字列)を取得して、それを使って計算するにはどうすれば良いでしょうか? 2>&1 これは難しい。gnu date (Linux等のdate)を前提とすれば出来ます。 i=`expr $i + 1` -------------------- パラメータでYYYYMMDDをもらうようなシェルを作成します。 $4="[" YYYY MM DD substr($4,13);print}' access_log >access_log.out, solarisのdateコマンドを用いて一昨日の日付を出力したいのですができません。  http://docs.hp.com/ja/B2355-90850/date.1.html 12357 部分は、出力を捨てるということだと思いますが、 現在日時からの日付計算をする方法は見つけることできましたが、 09:18:46.290418000 例えば現在の「年」が「2017年」の場合は「Mon Aug 22 2022 16:52:37 GMT+0900 (東京 (標準時))」といったフォーマットで。 5年後の日付データーから「年」データーを取得するgetFullYear()メソッドを「year」に代入し25、26行目でブラウザーに表示します。 ")syntax error: invalid arithmetic operator (error token is " たとえば、abcXYZ123defghiのなかから、XYZの後の「123」を抜き出したいです。 というコマンドがありましたが意味がわからないので教えてください。 これをexprに書き換えたところ exit ○Porting And Archive Centre for HP-UX str=$(( str + 1)) いまのご時世、例えば 10/31 の 23:00 から 5時間後 のタイムスタンプを計算しようとして、いちから正規表現で文字列を切り出して繰り上がりを計算して。。。ということはもうやりたくないです(挨拶)。, いろんなやり方があると思いますが、なるべく汎用的で手軽に、シェルスクリプトから使える方法で。。。と考えて、最初に思いついたのが GNU date を使うやり方です。-d オプションで指定すれば、望んだ時点の日付を好きなフォーマットで出力できます。, macOS に標準ではいっている date コマンドは BSD 版なのですが、brew を使って coreutils パッケージをインストールすると使えるようになります(Symlink などで置き換えなければ gdate という別コマンドになります)。, 実際にやってみます。まず 「10/31 の 23:00 (日本時間)」の UNIXTIME を得ます(Linux 環境などの場合は gdate を date に読み替えてください)。, gdate で目的は果たせるのですが、ただこれを社内展開するときに、このためにだけ「macOS のひとは、brew と coreutils インストールしてください」とは言いたくありませんでした。, Pyhton なら macOS でも標準で導入されてますし、他の用途でも使うことが多いので大抵あるかと思いました。正直 「全部 Python で書けよ」 と自分にツッコミ入れざるを得ないのですが、せっかくなのであくまで シェルスクリプトで使う ことに拘って書いてみました。, まず日付の文字列から UNIXTIME を得ます。dateutil.parser モジュールを使ってパースしました。, これに 5時間たすところは同じなので省略するとして、UNIXTIME から datetime オブジェクトを生成し、人間が読める書式で出力します。, Python 2.7.13 ならびに 3.6.5 の環境で動くことを確認しました。日付計算なんて基本的なことですし、もしかしたらもっとうまいやり方があるかも知れませんが、よければ参考にしてください。, シェルスクリプトの中で、日付の計算をしたりタイムスタンプを出力したりという需要はそこそこあります。macOS 標準でインストールされている BSD date では機能が少ないので、GNU date をいれたり Python で補うことを考えてみました。, dateutil - powerful extensions to datetime — dateutil 2.7.5 documentation, 8.1. datetime — 基本的な日付型および時間型 — Python 3.6.5 ドキュメント, GNU date コマンドがあればそれで一発。macOS でも brew で導入可能. 可能ならば、Linuxのコマンド(awkコマンド等)で ○HP-UX 11i v2 04/09 date(1)リファレンス みたいな感じです。 シェルスクリプト内であるファイルからファイル名日付を取得し、 echo abcXYZ12357defghi | sed -e 's/^.*XYZ\([0-90-9]*\). [09/Mar/2006:01:55:47 +0900] ○GNU Shellutils > exprもやってみたのですが、処理が遅くなるので使いません。 if test "$1" = "$A" res=$(( str + 1 )) 日付の部分は01~31ならすべて正になるみたいで。。。 やりたいチェックは、 echo test.txt | sed 's/${X}/${Y/g}' >test.txt 指定した日数分の前の日付を取得したいのですが、 if test "$2" = YES -o "$2" = NO うるう年とか考えると処理がかなり増えそうです(--; ・エラー YYYYMMDDの形に変更したいのですが done で、このパラメータが日付として問題ないかの判定をしたいのですが *$/\1/' -e 'y/0123456789/0123456789/'  http://hpux.cs.utah.edu/hppd/hpux/Gnu/sh_utils-2.0/, HP-UX標準であるdate(1)コマンドでは、無理だと思いますよ。 $ ./test.sh 26/Mar/2005:18:22:15 +0900 そうすれば1日前の日付を出したい場合は、$ date --date '1 days ago' が可能になります。 ありがとうございましたm(__)m, 回答ありがとうございます。 while [ $i -lt 10000 ] ※ 使っている日本語コードの指定は必要かも(例えば、 --ctype=EUC) $ ./test2.sh パッケージ(depotファイル)を探してみたら以下のようなのがありました(10.20/11.00) str=1 else echo エラー res=$(( $str + 1 )) {DD=substr($4,2,2);MM=M[substr($4,5,3)];YYYY=substr($4,9,4) X="a"  http://docs.hp.com/ja/B2355-90850/date.1.html  日付書式をYYYYMMDDの形で取得したいのです。, apacheのログだと4カラム目ですね。 then echo 数字だけ 第1引数は 数字じゃなければエラー awk 'BEGIN{M["Jan"]="01";M["Feb"]="02";中略;M["Dec"]="12"} ○HP-UX 11i v2 04/09 date(1)リファレンス i=0 シェルスクリプト内で、sedなどを使って特定の文字列の後の文字列を抽出したいのですが、どうすればいいでしょうか? のようにして実行させたいです。, 日本語対応sedだと日本語数字混じりでもできますね。 fi echo 'Using $((str + 1))' 指定した日数: 10(MAX値は100程度) なにか良い方法は無いでしょうか。 i=`expr $i + 1` else echo エラー 方法がいまいちわかりません。 よろしくお願いいたします。, 「言語 Ruby」に関するQ&A: C言語で分からない所が有ります。オススメの本は有りますか?他、rubyに鞍替えした方が良いか。, 「文字列 日付」に関するQ&A: エクセルに入力された日付「S40.07.20」(文字列)を西暦の日付データに修正したい, 「Python 文字列」に関するQ&A: [python] 文字列を変数名として使いたい, 「Python 言語」に関するQ&A: 言語の選択、VB.NET or Python, 「比較 Ruby」に関するQ&A: rubyでは比較演算子もメソッドとして書き換えが可, 「文字列 Ruby」に関するQ&A: rubyで文字列のreplaceの方法について, Perl版まで教えていただきありがとうございます。 linux - 比較 - シェルスクリプト 日付 変数 bashで日付形式を変換する (5) 私はこの形式の日付を持っています: "2011年6月27日"と私はそれを20110627に変換したい 3つの引数を受け取り、値のチェックを行いたいのですが書き方がよくわかりません・・。 if test "$3" = "$A" 諦めて自作の道を辿る事にします。 パッケージ(depotファイル)を探してみ...続きを読む, command > /dev/null 2>&1 `date --date '1 years 1 months ago' +%Y%m` do Using expr 09:18:56.929345000 よろしくお願いします。, bashをご使用と判断して ", シェルは初心者のため、ご教授ください。 res=$(( str + 1 )) gnu date が無いと、大の月・小の月・うるう年などを地道に調べる必要あり。, 失礼します。 Using $((str + 1)) > exprもやってみたのですが、処理が遅くなるので使いません。 sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?, ' ・・・' で囲まれた中の$はそのままドルマークです。変数展開をするなら、'・・・'で囲んではいけません。 ./XXX.sh 20031131 ⇒ エラー ではなく、 > /dev/null GNUのsh-utilsを別途入れる必要があります。 09:18:46.290418000 fi echo 'Using $((str + 1))' です。よろしくお願いします。, 1)数字以外を削除して元と同じなら数字のみだとわかる さて、ご質問ですが、command > /dev/null という部分は、command の普通のメッセージ(ファイル記述子1番)を /dev/null というファイル(このファイルは特殊で、ここに出力された内容は全て捨てられます)に出力されます。で、残る "2>&1" という部分ですが、これは2番のファイル記述子を1番というファイル記述子にする、という意味になります。 だと思います。 文字列(yyyymmdd)から直接日付計算を行うためにはどうすればよいのでしょうか? 参考URL:http://www.rinneza.com/junya/tech/solaris10_x86/, sedなどで、特定の文字列の後の文字列を抽出したい