The UNIX and Linux Forums  
Helloやアメリカ合衆国へようこそ! UNIXおよびLinuxフォーラム!訪問し、当社のグローバルコミュニティに参加いただきありがとうございます。

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
Googleのunix.com



シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
内部ループは、 whileループ panknil シェルプログラミングとスクリプティング 0 2008年1月7日 12:49午後
ループの場合 xramm HP - UX 3 2007年10月10日 03:20午後
whileループ hemangjani シェルプログラミングとスクリプティング 2 2006年11月2日 11:01午前
ループの munnabhai1 シェルプログラミングとスクリプティング 3 2006年4月6日 03:30午後
同様の機能をどのように取得するwhileループまたはループの trynew シェルプログラミングとスクリプティング 3 2002年6月17日 12:09午後

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2007年8月30日
baghera baghera is offline
登録ユーザー
  
 

参加日: 2007年8月
投稿: 23
Awkの中でループ

どのようにするには、 Awkの中でループ。

私の列の変数があると言うことができます:

1 4 3
2 4 4
3 5 3

今私の列1 、 2と3の全ての要素を追加したりしますし、それぞれの要素数をして分けています。

列には、私のスクリプトには、引数として与えられる列\u003dの数

私\u003d我々は今のところ追加されている列

自分の欲しいものをやらなければならない、このための擬似コードです:

一方[列> 0 ]
する
Awkの' (和+ \u003d $私)エンド(印刷和/ NR " \ T "を) '
私+ +
コラム-
完了した

だから結果、完成したときに実行されます:

2 6.5 3.333333

しかし、私は自分のwhileループ機能になることはありません。助けてください。これは私のコードです:

#############################
一方[ " $列" -グアテマラ0 ]
する
awk_cmd \u003d ` awkは、六\u003d $ 1 ' (和+ \u003d $私)エンド(印刷和/ NR ) ' `
" $データ| $ awk_cmd "エコー
私\u003d ` exprに$私+ 1 `
カラム\u003d ` exprに$列- 1 `
完了した
#############################
  #2固定リンク)  
Old 2007年8月30日
ranj @ chn ranj@chn is offline Forum Advisor  
Ubuntuの再生中に!
  
 

参加日: 2005年10月
場所:チェンナイ
投稿数: 365
この動作しますか?

コード:
awk -f temp.awk tempfile
ここでtemp.awkです
コード:
{ for(i=1;i<=NF;i++) { sum[i]+=$i } }
END { for (i in sum) {printf("%f\t", sum[i]/NR) } }
引用:
ところで、 2番目の列6.5 、すべきではないが、 4.33

chn @ ranjの編集最終更新、 2007年8月30日に 11:41午前..理由:コメントを追加
  #3固定リンク)  
Old 2007年8月30日
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
モデレータ
  
 

参加日: 2005年2月
場所:ボストン、修士
投稿数:5122
引用:
当初の投稿 ranj @ chn View Post
コード:
awk -f temp.awk tempfile
ここでtemp.awkです
コード:
{ for(i=1;i<=NF;i++) { sum[i]+=$i } }
END { for (i in sum) {printf("%f\t", sum[i]/NR) } }
ranj 、
ときに'私'は、反復処理の順序を判定保留されているインデックスを持つ配列'和'を反復する、つまりは、 '私'からなると仮定しない'1 ' 'へのNF ' 。
  #4固定リンク)  
Old 2007年8月30日
ranj @ chn ranj@chn is offline Forum Advisor  
Ubuntuの再生中に!
  
 

参加日: 2005年10月
場所:チェンナイ
投稿数: 365
Smile 最終的には?

私は知っているdidn't 。そのためには、その値は任意の順序で印刷されているがどういう意味ですか?その点を考慮し続ける!
  #5固定リンク)  
Old 2007年8月30日
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
モデレータ
  
 

参加日: 2005年2月
場所:ボストン、修士
投稿数:5122
引用:
当初の投稿 baghera View Post
どのようにするには、 Awkの中でループ。

私の列の変数があると言うことができます:

1 4 3
2 4 4
3 5 3

今私の列1 、 2と3の全ての要素を追加したりしますし、それぞれの要素数をして分けています。

列には、私のスクリプトには、引数として与えられる列\u003dの数

私\u003d我々は今のところ追加されている列

自分の欲しいものをやらなければならない、このための擬似コードです:

一方[列> 0 ]
する
Awkの' (和+ \u003d $私)エンド(印刷和/ NR " \ T "を) '
私+ +
コラム-
完了した

だから結果、完成したときに実行されます:

2 6.5 3.333333

しかし、私は自分のwhileループ機能になることはありません。助けてください。これは私のコードです:

#############################
一方[ " $列" -グアテマラ0 ]
する
awk_cmd \u003d ` awkは、六\u003d $ 1 ' (和+ \u003d $私)エンド(印刷和/ NR ) ' `
" $データ| $ awk_cmd "エコー
私\u003d ` exprに$私+ 1 `
カラム\u003d ` exprに$列- 1 `
完了した
#############################
baghera 、
私たちはすでにこの運動では、以前のスレッドを一度に行ってきたと考えています。正確には何が違うかしようとしていないですか?
もしすべての行の列ごとの平均値を計算しようとしている-このソリューションは、前のスレッドの一部として提供されています。
と、前のソリューションを理解してみます/またはあなたの新しい' [???]要件を調整します。
  #6固定リンク)  
Old 2007年8月30日
baghera baghera is offline
登録ユーザー
  
 

参加日: 2007年8月
投稿: 23
引用:
当初の投稿 vgersh99 View Post
baghera 、
私たちはすでにこの運動では、以前のスレッドを一度に行ってきたと考えています。正確には何が違うかしようとしていないですか?
もしすべての行の列ごとの平均値を計算しようとしている-このソリューションは、前のスレッドの一部として提供されています。
と、前のソリューションを理解してみます/またはあなたの新しい' [???]要件を調整します。
今後の違いは、私はそれにはbash /ボーンのスクリプトが必要です。前のスレッドは、 Awkのためにされたプログラムです。しかし、私にはbash / Bourneシェルスクリプトを変更しなければならなかった。正直言って、私は知っているの違いはありませんが、私はいくつかのugglyが私の友人から私は彼のAwkのプログラムは、いくつかの助けを見せていた。だから、バックボーン/ bashをつけた。

だから私のスクリプトはこれまでのところです:

猫$ 1 |はgrep "結果" |はgrep " "番号を取得| xargsの- $ 2 Ñ

多少はありませんし、上記の高度なコマンドが、これだけので、全体像を取得しています。このファイルを$ 1と列の番号を名前の値を$ 2で決定される列を生成します。

さて、私はそこから2ドルを変数になると、多くの列を知る方法はありません。多くが、 2月10日前後することができますだけで十分だというつもりはない。私は、各列を追加する必要があると述べ、前を通るし、各列の要素数を分割する。したがって、上記の場合、次のコマンドからの出力です:

4月1日
5月2日
6月3日
7月4日
8月5日

その結果、する必要があります:

6月3日

は、各列の平均となります。

私はこのように行ってきたが、それはうまくていないようです、

一方[ $ j > 0 ]
する
猫一覧| Awkの' (和+ \u003d $私)エンド(印刷和/ NR ) '
私\u003d $ [ $私+1 ]
はJ \u003d $ [ $ j - 1 ]
完了した

awkは$勇との問題を抱えているようだしかし、私は変数であることが必要だが、 awkは:

awkは:違法なフィールド$ ( ) 、名は" i "を
入力レコード数が1 、ファイル
ソースの行番号1

編集bagheraで最終; 2007年8月30日に 03:45午後..
  #7固定リンク)  
Old 2007年8月31日
baghera baghera is offline
登録ユーザー
  
 

参加日: 2007年8月
投稿: 23
私は、問題を解決:

コード:
i="1"
j=$2

while [ "$j" -gt  0 ]
  do
  echo "$data" | awk -v k=$i '{sum+=$k} END {print sum/NR}'
  i=$[$i+1]
  j=$[$j-1]
done
私にとってこれは素晴らしい作品。と私の列だけを使用するには:

コード:
data='cat myList | xargs -n $2'
Closed Thread

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 01:48午後


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0