- ベストアンサー
awkによる日付編集
vmstatをファイルへ出力する時に、1行毎に日時を編集したいのですがうまく出来ません。AIXですと下記のスクリプトでうまくいっているのですがsoralisではどのようにしたらよいでしょうか。 vmstat $1 $2 | awk '!/kthr|---|avm/ {printf("%s | ", $0);system("date")}' >> $LOGDIR$DATE
- yukilion
- お礼率100% (2/2)
- Solaris系OS
- 回答数2
- ありがとう数6
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
awkをnawkまたは/usr/xpg4/bin/awk に変えると吉です。 ※理由についてはSolaris awkあたりのmanで確認してみてください。
その他の回答 (1)
- osamuy
- ベストアンサー率42% (1231/2878)
awk使わなくても、shellスクリプトでだけでいけるのでは。 vmstat $1 $2|while read s;do echo $s"|"`date`; done
お礼
nawkで解決しましたが、この方法も試してみたいと思います。ありがとうございました。
関連するQ&A
- awk詳しい方へ
あるファイルの最終行のみ、他の行と出力形式を変えたいのですが awkとNRを使ってスマートにできないでしょうか? 詳しい方ご教授お願いします。 不細工に作ると(ファイル名xxxのとき) nnn=`wc -l xxx | awk '{print $1}'` awk '{ if (NR != $nnn) printf("%s %s \n",$1,$2) else printf("%s %s \n",$3,$4) }' aaa こんな感じでしょうか。 なんか、一行とかでかけないでしょうか?
- ベストアンサー
- Solaris系OS
- UNIX awkコマンド
シェルスクリプトで、awkをつかって計算を行いたいのですが、 例えば、 file1 5040 というものが入っていたとして、 1列目の5と3列目の4を抽出して 5-4をさせて、 新しいファイルに、1という結果を保存したい場合、 どのようにしたらよいのでしょうか?? awk '{printf("%s\n",substr(0,1-3,1))} file1 > newfile でできると思ったのですができませんでした。 わかる方いましたら教えてください。
- ベストアンサー
- その他([技術者向] コンピューター)
- awkのBEGINについて
awkのBIGIN内で、データファイルの途中のレコード情報を取得することは可能でしょうか? 以下が行いたい詳細です。 下記例のテキストファイルの”DATE”行をawkスクリプトファイルのBEGIN内で取得したい。 例:test.txt 11111 22222 33333 DATE=20040706 44444 よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- awkについての質問
実行環境:AIX5.2 シェル:Ksh 以下の2点をシェル内部で実行しているのですが、上手くいきません。 ご教授お願いいたします。 (1)System関数の実行結果(標準出力)をTERM上に表示させず、処理をしたい。 #!/usr/bin/ksh awk '{ system("ls -l") ###具体的にはls -l 結果の2行目、第一フィールドをawk内で変数に格納 }' (2)変数に格納された文字列のバイト数を取得し、変数に格納したい。 length()は文字数を取得できる事は理解したのですが、文字数ではなく、文字列のバイト数を取得したいです。awkに実装されている関数などありますでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- awkスクリプトでダブルクォーテーションの削除
作成しているawkスクリプトを実行すると ”aaa" "1111" "kkk" ”bbb" "2222" "jjj" という出力になってしまいます。 ダルルクォーテーションを削除したかったので printf(”%s %s %s\n"、 adata、 bdata、 cdata) ↓ adataprint =gsub(”¥””、” ”、adata) bdataprint =gsub(”¥””、” ”、bdata) cdataprint =gsub(”¥””、” ”、cdata) printf(”%s %s %s\n"、 adataprint、 bdataprint、 cdataprint) としてみたのですが思ったような出力 aaa 1111 kkk bbb 2222 jjj にはなってくれません。 こういった処理はどのようにすればいいのか誰か教えていただけないでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- awkでファイルから読み込んだ値を、演算させるにはどうしたら良いですか
awkでファイルから読み込んだ値を、演算させるにはどうしたら良いですか。 ファイル(hoge.txt)の内容は、次の通り(全4行) 123 456 50 20 これを、bashスクリプトで計算させます。 FF=`cat hoge.txt | awk 'BEGIN {x=$2;printf ("%s, %s", (148+x*0.05), x);}'` echo "答え = ${FF}" このときの$2の値は、50です。但し、文字列として扱われているようです。 xの値を、数値として代入され、四則演算をさせるにはどうしたら良いですか? 以上、よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- awk内でsystem関数を使用しfunction
環境:AIX5.2 シェル:ksh を使用してシェルを作成しています。 awk内でsystem関数を使用しfunctionを呼び出す事は可能でしょうか? 実現したい内容は以下です。 ・awk内で同一シェルに記述されたfunctionを呼び出す ・functionを呼び出す際には引数を渡す 記述イメージ的に以下のような感じでスクリプトに記述していますが、 system関数内で呼び出そうとしているfunctionをfunctionとして 認識できないのでは??っという疑問を持ち始めてます。 function hoge{ HOGE=$1 echo ${HOGE} } awk'{ BEGIN{FS=":"} system(hoge AAA) }'
- ベストアンサー
- その他(プログラミング・開発)
- AWKスクリプトのエラーびついて
AWKアスクリプトのエラーについて質問があります。 以下のようなAWKスクリプトでエラーがでます。 #!/bin/nawk -f BEGIN{ npl = 30; ppl = 200; pd = 110; nd = 46; m1 =0.074; } { 処理 } エラーメッセージ /bin/nawk: syntax error 7 行目 コンテキスト m1 >>> =0.074; <<< なんで,こんなところでエラーが出力されるのかよくわかりません。 どなたか教えていただけないでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- awkで複数ファイルのある列を抽出し出力したい
awkプログラミングの初心者です。 今、複数ファイル(1000ファイル)から、それぞれある列(すべて同じ列番号)のデータを抜き出して、1つのファイルに出力したいと考えています。 具体的には、1列目に共通項、2列目以降に1000ファイル分の抽出された列を、合計1001列となるような1つのファイルとして出力したいと考えております。 awkを使って出力するには、どのようなスクリプトを作ればよいか教えていただけませんでしょうか。 <イメージ> 元となるファイル(例えば下記のように3ファイル、実際には1000ファイル)があります。 file1.txt: 1 10 2 15 3 17 : : 1000 25 file2.txt: 1 5 2 40 3 22 : : 1000 17 file3.txt: 1 9 2 20 3 16 : : 1000 32 出力後のファイルイメージ: 1 10 5 9 2 15 40 20 3 17 22 16 : : : : 1000 25 17 32 ちなみに、自分で作成したawkスクリプト(下記)では、上記出力後のイメージとは異なり、 縦にデータが結合されてしまいました。 awk `{print $2}` ./file*.txt > Output.txt 出力後のファイル: 10 15 17 : 25 5 40 :
- 締切済み
- Linux系OS
- awkでの出力項目の追加方法について
はじめまして。 急遽UNIXサーバをメンテすることになったUNIX素人です。時間に迫られており勉強する時間も今はとれず、皆様のお知恵をお借りしたく質問させていただきます。 現在、コマンド出力結果などの各行の先頭に、日時分秒を追加してテキストファイル出力するシェルスクリプトの作成をしています。 awk を使用して実現したいと思っていますが、具体的な方法についてアドバイスをいただけたらと思っています。 なお、コマンド出力結果をawkへ引き渡す方法は、スクリプト内で直接渡しても、一旦ファイル出力したものを読み込む形のどちらでもよいと思っています。 例 ・ps の出力結果 PID PPID PGID WINPID TTY UID STIME COMMAND 1072 1 1072 1072 con 1005 10:41:29 /usr/bin/bash 1052 1072 1052 544 con 1005 10:50:14 /usr/bin/ps ・日時分秒 を追加した結果 DATE PID PPID PGID WINPID TTY UID STIME COMMAND 200705111735 1072 1 1072 1072 con 1005 10:41:29 /usr/bin/bash 200705111735 1052 1072 1052 544 con 1005 10:50:14 /usr/bin/ps 大変初歩的な質問で申しわけありませんが、なにどぞご教授お願いします。
- 締切済み
- その他(プログラミング・開発)
お礼
nawkでできました。ありがとうございました。