The UNIX and Linux Forums  

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



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

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
ループ問題 パドック シェルプログラミングとスクリプティング 2 2008年9月23日 11:15午前
ループの問題解決のために mdap シェルプログラミングとスクリプティング 3 2008年8月16日 02:27午後
問題のループの は、オブザーバー シェルプログラミングとスクリプティング 2 2008年5月28日 03:43午前
問題をwhileループとSQL nandajk UNIXのダミー質問と回答のため 20 2007年5月4日 07:19午前
問題whileループ mridula 高レベルのプログラミング 1 2005年12月11日 11:44午前

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

参加日: 2008年11月
投稿: 2
ダブルwhileループ問題

こんにちはすべて、私は二重のwhileループとの奇妙な問題が発生している。 whileループは、 2つの目的は2つのファイルを比較するには、 tmplist.txtサーバーの完全なリストを参照ファイルです。詳しくはロジックと入力と出力の関係は、添付画像を参照してください。

whileループは、 2 / tmplist.txt / test.csv 、線で線内のサーバーを検索する必要があります。例えば、最初のアイテムの検索/ test.csv server2の 一致が検出されるまで/ tmplist.txt 、 1行目からのスタート/ ( LINENUM \u003d 1 ) 、それが見つからない場合の出力は、 『 NA 』に移動し、次の行に/ tmplist.txt tmplist.txt server2の、 と同時にLINENUM更新してください。 他のユーザーが次のサーバーを検索するにはプロセスが続行されます server3 / tmplist.txtから 現在の行 以降(以降、すべてのサーバーは常にalphabatic順)一覧表示されます。

LINENUM行番号の変数(指標)は、内側のwhileループで使用される。これは1としては、後に定義済みの場合に条件 もし[ $サーバ\u003d $ REFS ] 真実ですが、 LINENUMが増加して、 whileループと内側、外側のwhileループの継続を破る。しかし、外側のwhileループでは、たびにループとサーバーCOUNT件を読み込み、再度LINENUMの初期値は1からではなく、インクリメントLINENUMから来るから、内側のwhileループを開始します。


2の詳細を、プログラムの一部を以下にwhileループを示します。
誰も私にはここを間違って説明するのに役立つてもらえますか?これは私の最初のUNIX割り当て、本当にご協力に感謝しますです!


# ! / binに/ bashの
タイプ\u003d P2PS
LINENUM \u003d 1

読むサーバーCOUNT件中;行う

猫tmplist.txt | ラインを読む;行う

REFS \u003d $ (頭- $ LINENUM tmplist.txt |尾-1 )

もし[ $サーバ\u003d $ REFS ] ;し
LINENUMせ+ +
- nをエコー" 、 " $ COUNT件> > t.csv
壊す
その他の
LINENUMせ+ +
エコー- nを"北米" > > t.csv
継続
Fiの
完了した

実行< test.csv
添付画像
File Type: bmp untitled.bmp (177.0キロバイト、13件)
  #2固定リンク)  
Old 2008年11月16日
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unixのデーモン
  
 

参加日: 2001年8月
場所: Ashburn 、バージニア州
投稿数:9131
内側のループはサブプロセスのことです。何でもいいが、親プロセスに影響はありませんが変更されました。それと同じ状況の

のX \u003d 1
bashの- c "とのX \u003d 2 "
Xの$エコー

ループの両方をstdinから読んでいる。各プロセスは2つのループのように別々のプロセスを確実にする必要がある1 STDINハンドルしている。
  #3固定リンク)  
Old 2008年11月16日
不気味な不具合を生じさせる creepy cripple is offline
登録ユーザー
  
 

参加日: 2008年10月
投稿: 2
2つのループは必要ありません、あなたのスクリプトではgrepのような強力なUnixコマンドを使用するようにしています。この動作するはずです:
もちろん、 t.csvスクリプトを実行する前に空にする必要があります。

は、ラインを読む
する
補助\u003d $ (はgrep $ラインtest.csv )
[場合、 [ ! - Ž $補助] ]
それから
エコー" $ " >補助> t.csv
その他の
"北米" > > t.csvエコー
Fiの
実行< tmplist.txt
  #4固定リンク)  
Old 2008年11月16日
elbrand elbrand is offline
登録ユーザー
  
 

参加日: 2008年4月
場所: Wolfenbuettel /ドイツ
投稿: 12
内側のループでは、サブプロセスを読んでいる。すべての変数を設定値を変更するか、内側のループ内での外に知られているではありません。小されている場合は、ファイルを交換しようとは反対のためのループを構築する。ない場合は、ストアメタファイルには、内側のループ内での情報を外にしている。しかし、この非常に多くの速度を減少させることができます。
しかし、実際に私は二重ループの必要性はないと思います。なぜ最初のファイルをtmplist.txtから各行はgrep ?
  #5固定リンク)  
Old 2008年11月16日
Franklin52 Franklin52 is offline Forum Staff  
モデレータ
  
 

参加日: 2007年2月
投稿数:4,346
Awkのと解決法:

コード:
awk '
NR==FNR{a[$1]=$2;next}
$0 in a{print $0,a[$0];next}
{print "NA"}
' test.csv tmplist.txt > t.csv

  #6固定リンク)  
Old 2008年11月17日
dawn_1030 dawn_1030 is offline
登録ユーザー
  
 

参加日: 2008年11月
投稿: 2
あまりにも多くのご回答いただき、ありがとうございます!本当に強力なコマンド!
私のスクリプトが動作します。おかげで、すべて!
Closed Thread

ブックマーク

タグ
Unixコマンド

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

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

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

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




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


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

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