2011-12-19 23 views
0

次のコードを使用してawkで月の名前を取得しようとしています。システムを使用してawkで月の名前を取得しようとしています

system("date -d" dat "+%b") 

どのように出力を変数に割り当てるのですか?

+0

どのプラットフォームのどのawkバージョンですか? GNU awkは他の場所では利用できない機能を持っているので、重要です。 –

+1

また、ある時点で、[スマートウェイの質問方法](http://www.catb.org/~esr/faqs/smart-questions.html)をお読みください。あなたは間違った質問をしていることに気付きます。 'awk'のUnixタイムスタンプから月名を得るにはどうすればいいでしょうか?'おそらくコメントがあります ''システムによって実行されたコマンドから出力を得る方法があるかどうか疑問に思っていました。ですから、 'date'コマンドを使って変換を行うことができますか? ' –

+0

http://stackoverflow.com/questions/1960895/awk-assigning-system-commands-output-to-variableこのスレッドを見る –

答えて

0

をあなたの質問は、「私は、コマンドラインの出力を使用して変数を移入するにはどうすればよい」であれば、答えは「パイプ」です。これは本当に、おそらく何ではないこと:-)

$ awk 'BEGIN{ str="date \"+%b\""; str | getline content; print content; }' 
Dec 

注やっているしたいのですが、あなたの意図についての詳細なしで、少なくともそれは、あなたの質問に答えます。

2

system()を使用する必要がありますか? awkのstrftime()はどうですか?あなたはhereの例を見ることができます(GNU-awk特有のようですが)。

+0

関数が指定された文字列に従って動作しているかどうかを確認しようとしています。 dat = "20111016"; MONTH = strftime( "%b"、substr(dat、5,2)); 文字列を変更すると、それでも私はMONTHをDECとして与えています。 –

+2

文字列 '20111016'はUnixのタイムスタンプではなく、2011年10月16日(2011年10月16日)を表しますか?それでは、おそらく、GNUのawkの時間関数、特にmktimeをより詳しく調べる必要があります。 –

0

あなたはこのような何かを行うことができます -

[jaypal:~/Temp] awk -v dat="20111016" 'BEGIN{split("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",month,","); a=substr(dat,5,2); print month[a]}' 
Oct 
関連する問題