• ベストアンサー

システムコマンドをawkで使用?

システムコマンド(たとえばechoなど)を、awkで使用する方法ってあるのでしょうか? 人に聞かれたので、いまいちどういった状況を指しているかがわかりませんが、、、 ご存知の方いらしたらお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ese_ee
  • ベストアンサー率48% (68/139)
回答No.2

system()関数があります。

参考URL:
http://takeno.iee.niit.ac.jp/~shige/misc/script/awk1/node6.html

関連するQ&A

  • awkコマンドについて

    教えてください。 Solaris9を使用しています。 SYSTEM Vでawkコマンドを使用しているシェルをSolaris9上で実行すると awk: レコード `従業員番号 従業員氏名 ...' においてフィールド指定が多すぎます。 のMSGが表示されてしまいます。 Solaris9では、1レコードの長さやフィールド数に制限があるのでしょうか? 行っている処理はテキストファイルのタブをカンマに変換です。 SYSTEM V上では正常に動作します。 よろしくお願いします。

  • awkコマンドに引数を渡す方法

    awkコマンドに対して引数を渡す方法が知りたいです。 例えば以下のようなリストファイルがあったとします。 --------------------------------------- % cat test.lst 454 100 37536 200 32432 300 34q2 400 --------------------------------------- そこで以下のシェルを実行すると --------------------------------------- #!/bin/sh for VAL in 100 200 300 do CNT=`cat test.lst | awk '$2 == $VAL {print $1}'` echo "$VAL : $CNT" done --------------------------------------- awkコマンド内の$VALが引数ではなく文字列として認識されてしまうため、 出力結果が 100 : 200 : 300 : となってしまいます。 100 : 454 200 : 37536 300 : 32432 という結果を出力したい場合(awk内の引数を有効にする場合)どうすればよいでしょうか? awkを使用しない方法もあるかと思いますが、今回はawkを使った方法を知りたいです。 宜しくお願い致します。

  • 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内で使用した変数をシェル変数に代入する事は可能でしょうか? system関数を使ってexportなどをしてみましたが、だめでした。 イメージ的には以下のような感じです。 #!/usr/ksh HOGE=1 echo $HOGE | awk '{ HOGE=2 }' echo $HOGE ←※ここでHOGEの内容が2になるようにしたい。 お手数ですが、お分かりになる方お助けお願いします。

  • unixコマンドのawkについて

    uniコマンドのforやifなどは10行ほどで簡単な使用例をかけるのですか、awk簡単な使用例を教えて頂けませんか? 初歩的な質問んですいませんが、」よろしくお願いします。 できればc言語などを使わずに単体で使える方法をお願いします。

  • Bシェルのawkコマンドについて

    Bシェルのawkコマンドについてですが、例えばプロンプトから % ls -l hoge.txt | awk '{print $5}' と入力すると、hoge.txtのファイルサイズが出力されますが、同様のことをBシェルの中で行おうと思っています。 下記のように、配列arrayにはスペース区切りで3つのデータが入っており、N番目のデータを取得したいという場合に、Nに変数を使用して取得する方法がわかりません。 #!/bin/sh array="AA BB CC" num=3 # CCを取得したい echo $array | awk '{print $num}' 上記で実行すると、"AA BB CC"のようにすべて出力されてしまいます。awkで出力する箇所を${数値}で指定すればうまくいくのですが、ランダムで決めた数値(1~3)をnumに入れて取得したい場合、このようなことは可能でしょうか。 もし不可能な場合でも、awk以外に何かコマンドがあればご教授願います。なお、作成するのはBシェルになります。

  • [awk]マッチしたものをすべて取り出したい

    awk(GNU awk)を使って正規表現にマッチした部分文字列を最初にマッチしたものだけでなく、すべて取り出したいと思っています。 grepコマンドを使うと次のように簡単に取得できるのですが、awkだけで実現する場合どのように記述したらよいのでしょうか? ■例 $ echo 'abcdebx' | grep -o 'b.' 結果: bc bx # 最初にマッチしたものだけなら取得できる $ echo 'abcdebx' | awk 'match($0, /b./) {print substr($0, RSTART, RLENGTH)}' 結果: bc ■環境 GNU Awk 4.0.1 よろしくお願いします。

  • system関数でatコマンドを呼び出して使用したいのですが

    はじめまして、system関数について質問があります。 TVキャプチャが動作しているマシンがありまして(OSはFedoraCore6) そこでperlでCGIを作成して、その中で予約録画みたいなことがやり たいのですが、CGI中にsystem関数でatコマンドを利用して予約をして みたのですが、うまく動作しません。 $1 = 10; $2 = 20; system(`echo "xxxx.sh"|at $1:$2`); (xxxx.shはmencoderを起動するシェルスクリプト) みたいにしているのですが、atqなどで確認しても予約されていません。 どのようにしたらsystem関数からatコマンドが利用できるのでしょうか? ご教授よろしくお願いします。

  • df -k の結果を awk で編集したいのですが。

    df -k コマンドの結果各行の最後に日付を付けて 出力したいのですが、どうしてもうまく日付が表示できないのです。 df -k | gawk '{print $1,$2,$3,$4,$5,$6,ここになんといれればよいのか?;}' 色々試しましたがうまくいきません。 ただの日付表示だと以下のechoコマンドで簡単に表示できるのですが、 これをawkに盛り込みたいのです。 echo `date +%Y/%m/%d-%H:%M` 理想の出力結果は↓こんな感じなのですが・・・どうしても出来ないのです。 /dev/sda1 118981 27037 85801 24% /boot 2007/10/29-15:00 どなたかご教授下さい。 またdf -k コマンドの各行末尾に簡単に日付を入れる方法ってないですか?

  • awk等で特定文字列の抜き出し

    次のような文字列から特定の文字を抽出したいです。 「xxx,yyyyy,zz」 で、yyyyの部分のみをコマンドラインから抽出したいのですがどのようにしたらよいでしょうか? ためしに自分で考えたコマンドは以下の通りです。 % echo "xxx,yyyyy,zz" | awk '{print substr($0, 1, index($0, ","))}' で行うと最初の「,」でなりxしか抽出できません。 すみませんが、いい方法がありましたら教えて下さい。

専門家に質問してみよう