![]() |
|
|
Googleのunix.com
|
|||||||
| シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。 |
その他のUNIXおよびLinuxフォーラムトピックは参考にすること
|
||||
| スレッド | スレッドスターター | フォーラム | 返信 | 最後の投稿 |
| 1つの特定のファイルのみを削除するsedで何かを更新しています。 | bisla.yogender | シェルプログラミングとスクリプティング | 4 | 2008年3月24日 11:48午前 |
| ファイルまたは更新されていないかどうかを知るために | raj333 | シェルプログラミングとスクリプティング | 2 | 2007年11月5日 05:29午後 |
| ループ内でファイルの更新 | braindrain | シェルプログラミングとスクリプティング | 4 | 2007年6月20日 02:37午後 |
| なぜ私のSARは、出力ファイルを更新されていません。 | skneeli | UNIXの詳細&エキスパートのためのユーザー | 1 | 2006年11月12日 08:29午後 |
| をZipアーカイブ内のファイルの更新 | dbridle | AIX | 6 | 2006年9月27日 04:29午後 |
![]() |
|
|
LinkBack | スレッドツール | このスレッドを検索 | スレッドを評価 | 表示モード |
|
|
|
||||
|
awkは、別の1つのファイルを更新する、比較すると、更新
こんにちは、
私を読んで、この素晴らしいフォーラムを検索すると別のアプローチを試みたが、私はいくつかの知識やneuronesに欠けるようだ^ ^ ここに私を達成するために努力しているものです: ファイル1 : テストfilea 3495 ; テストfileb 4578 ; テストfilec 7689 ; テストfiley 9978 ; テストfilez 12300 ; ファイル2 : テストfilea 3495 ; テスト4578提出; テストfilec 7689 ; テストfilex 8978 ; 結果: テストfilea 3495 ; テスト4578提出; テストfilec 7689 ; テストfilex 8978 ; テストfiley 9978 ; テストfilez 12300 ; 最後のフィールドに(フィールド$ 3 ) 、ファイル2から新しいコンテンツ(ここで"鍵" 8978のものです)最終的な出力とは、ファイル2の(テスト4578提出されたコンテンツを別のベースのコンテンツを追加する必要があります。ここ) File2に置き換えてください1つの比較。 今ここです: Awkの'のNF (キー\u003d $のNF ;キー[キー] + + ) NR \u003d\u003d FNR ( key1 [キー] \u003d $ NFのORS ; rec1 [キー] \u003d $ 0 ORS ;次) ( key2 [キー] \u003d $ ORSのNF ; rec2 [キー] \u003d $ 0 ORS ; )キーで次の(韓国)終了( (場合( key1と[ K ] \u003d\u003d key2の[ K ] ) (印刷rec2の[ K ] )他(印刷rec1の[ K ] ) ) ) ' $ File2に$ファイル2 > $ file1.updated 読みやすくするために: Awkの' のNF ( キー\u003d $のNF ; キー[キー] + + ) NR \u003d\u003d FNR ( key1 [キー] \u003d $ ORSのNF ; rec1 [キー] \u003d $ 0 ORS ; 次の ) ( key2 [キー] \u003d $ ORSのNF ; rec2 [キー] \u003d $ 0 ORS ; 次の ) エンド ( キーの(韓国) ( もし( key1と[ K ] \u003d\u003d key2の[ K ] ) ( 印刷rec2の[ K ] ) その他の ( 印刷rec1の[ K ] ) ) ) ' $ File2に$ファイル2 > $ file1.updated しかし..このほかは動作しません: / |
|
||||
|
ああ私の....
![]() どうもありがとう! 私は、ソリューションファイル2に反復ファイル1から店の鍵のようなものだったし、行方不明のレコードを探すために繰り返し逆思考...私ははるか遠くのAwkの美しさからだった... もし私が正しく理解し、 Awkの2つのファイルを、自動的にマージレコード自体を読み取るか?その必要はないファイル1の値を格納するためにFile1はそれらを比較することであることを意味するか?美しい... 私はされません2つのこと:アンダースコアを使用する(それを"すべて"の記録を読むの略ですか? ) 、と推測する理由は、最後には終了ですか? についてはそれを失敗するようなコマンドは、 ' ; ' ?がどの程度のソートと行の最後のフィールドを指定するために知っていますか?やのようなものです: | Awkの' ( printf substr ( $のNF 、 1 、長さ( $のNF ) -1 ) ; $のNF \u003d " " ; printf " % \ Ñ " 、 $ 0 ) ' |ソート- nを| Awkの' ( " printf % sを% sは\ Ñ " 、 $ 0 、 $ 1 ) ' | awkは' ( $ 1 \u003d " " ;サブ( / ^ + / 、 " " ) ; printf " % \ Ñ " 、 $ 0 ) ' 望ましいですか? どうもありがとうradoulov再び^ ^ |
|
||||
|
おかげでこのradoulovを説明するのは、時間を割いて多くの^ ^は本当に素晴らしいことだ!
引用:
27384 ; 7384 、または384 ; 非常に多くのものを試したけど、これは一部のmistypesのまま/ミスを私の側にするか、 Windowsの改行コードのように見えるため、いくつかのファイルを推測する必要があります(いくつかのファイルをWindows上で作成され、いくつかのUnix上で) ? 私のSQLクエリのためのbashスクリプトユーティリティでいるのは最後のフィールドが固定されていませんソートファイル/更新は、いくつかの異なるファイルを使用するにはフィールドの数はいつもと同じですが、キーの値をすることができます、ほとんど更新されないが、次の行の途中で発生する。 だからこのケースでのCLIから$キー引数を: (韓国_ )印刷のためのAwk _ '末端( [韓国]}{_[$'"$キー"']\u003d$ 0 ) ' $ File2に$ファイル2 > $ file1.updated との引数'0 '上の行の最後の条件additionnal (ので分かりませんでした$キーのNFに有効にする' ) " $キー" 'をawkは。 私は小さなコミュニティのために作ってるんだし、本当に単純なことをしている。 もし私が投稿することができますawfullコードを読むことを恐れないしている^ ^ |
|
||||
|
こんにちは非常に& Unixのawkは、私の要求は非常に似ているこの新..午前
私は最初の列で比較したい ファイル1 : 0000 〜 00058 |グリーン 0000 〜 00059 |グリーン 0000 〜 00060 |グリーン 0402 〜 01055 |グリーン 0402 〜 01058 |グリーン 0402 〜 01059 |グリーン 0402 〜 01061 |グリーン 0402 〜 01065 |グリーン ファイル2 : 0000 〜 00057 |レッド 0000 〜 00058 |ブルー 0000 〜 00059 |レッド 0000 〜 00060 |ブルー 私の結果をする必要があります 0000から00058 |青 0000から00059 |赤 0000から00060 |青 0402 〜 01055 |グリーン 0402 〜 01058 |グリーン 0402 〜 01059 |グリーン 0402 〜 01061 |グリーン 0402 〜 01065 |グリーン 0000 〜 00057 |レッド あなたの返事を待って... 米感謝 |