The UNIX and Linux Forums  

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
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午後

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年6月9日
mecano mecano is offline
登録ユーザー
  
 

参加日: 2008年6月
投稿数: 4
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固定リンク)  
Old 2008年6月9日
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
中毒
  
 

参加日: 2007年1月
場所: Варна 、 България /ミラノ、イタリア
投稿数:2892
順序は重要ではない場合:

(または、 nawkを使用/ usr/xpg4/bin/awk Solaris上)

コード:
awk 'END{for(k in _)print _[k]}{_[$NF]=$0}' file1 file2
そうでなければ、あなたの例を:

コード:
awk 'END{for(k in _)print _[k]}{_[$NF]=$0}' file1 file2 |
  sort -k3n

編集radoulovで最終; 2008年6月9日に 10:39午前..
  #3固定リンク)  
Old 2008年6月9日
mecano mecano is offline
登録ユーザー
  
 

参加日: 2008年6月
投稿数: 4
ああ私の....

どうもありがとう!

私は、ソリューションファイル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再び^ ^
  #4固定リンク)  
Old 2008年6月9日
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
中毒
  
 

参加日: 2007年1月
場所: Варна 、 България /ミラノ、イタリア
投稿数:2892
引用:
当初の投稿 mecano View Post
[...]
もし私が正しく理解し、 Awkの2つのファイルを、自動的にマージレコード自体を読み取るか?その必要はないファイル1の値を格納するためにFile1はそれらを比較することであることを意味するか?美しい...
[...]
これは、一意性を保証連想配列(ハッシュ) 、使用しています
のキー(この場合のNFドル)とされている値が常に一に考えて最後の
(ファイル2の1 ) 。すべてのキー( $のNF )は、全体のレコード( $ 0 )になると関連付けている場合には、同じキーの値が更新されます。

引用:
私はされません2つのこと:アンダースコアを使用する(それを"すべて"の記録を読むの略ですか? ) 、と推測する理由は、最後には終了ですか?
うーん、ちょっとこれを書いているスタイルです。
それはあなたのコードをより読みしたい
この代わりに(そしてこれは、 SolarisのAwkのも昔のプレーンに対応しています)を使用できる:

コード:
awk '{
  key_record[$NF] = $0     # associate key ($NF) with entire record ($0) 
  }
END { 
  # after the entire input has been read 
  for (key  in key_record) # for every key stored
    print key_record[key]  # print the associated value
    }' file1 file2
引用:
についてはそれを失敗するようなコマンドは、 ' ; ' ?
私は種のコマンドを正しくキャストと思う。このような例では、入力が正しくソートされていませんがありますか?

引用:
がどの程度のソートと行の最後のフィールドを指定するために知っていますか?
やのようなものです:
| Awkの' ( printf substr ( $のNF 、 1 、長さ( $のNF ) -1 ) ; $のNF \u003d " " ; printf " % \ Ñ " 、 $ 0 ) ' |ソート- nを| Awkの' ( " printf % sを% sは\ Ñ " 、 $ 0 、 $ 1 ) ' | awkは' ( $ 1 \u003d " " ;サブ( / ^ + / 、 " " ) ; printf " % \ Ñ " 、 $ 0 ) '
望ましいですか?
なぜ?最後のフィールドの位置を固定されていないか?
私が行くとその場合には:

コード:
perl -lane'
  $h{$F[-1]} = $_;
  print join "\n", map $h{$_}, sort {$a <=> $b} keys %h 
    if eof'
(もしあなたが本当にしたい抜け出すのは、 ' ; '間)の並べ替え:

コード:
perl -lane'
  chop $F[-1] and $h{$F[-1]} = $_;
  print join "\n", map $h{$_}, sort {$a <=> $b} keys %h 
    if eof'
それ以外のシェルを使用してソート+ :

コード:
read<file;set -- $REPLY;sort -k$#n file
  #5固定リンク)  
Old 2008年6月9日
mecano mecano is offline
登録ユーザー
  
 

参加日: 2008年6月
投稿数: 4
おかげでこのradoulovを説明するのは、時間を割いて多くの^ ^は本当に素晴らしいことだ!

引用:
私は種のコマンドを正しくキャストと思う。このような例では、入力が正しくソートされていませんがありますか?
よくはないが、特定の事件が、私は、 ' ; 'を使用する'を並べ替えたりできるように- n 'をタップすることで正確に覚えて(これを私はして並べ替えを適用Awkの最後のフィールドで展開するためにキーを押すと、 - nを指定せず。恥'ソート' ) 、例えば、逆のような値を持つキーの選択を許可していません:
27384 ;
7384 、または384 ;
非常に多くのものを試したけど、これは一部のmistypesのまま/ミスを私の側にするか、 Windowsの改行コードのように見えるため、いくつかのファイルを推測する必要があります(いくつかのファイルをWindows上で作成され、いくつかのUnix上で) ?

私のSQLクエリのためのbashスクリプトユーティリティでいるのは最後のフィールドが固定されていませんソートファイル/更新は、いくつかの異なるファイルを使用するにはフィールドの数はいつもと同じですが、キーの値をすることができます、ほとんど更新されないが、次の行の途中で発生する。
だからこのケースでのCLIから$キー引数を:
(韓国_ )印刷のためのAwk _ '末端( [韓国]}{_[$'"$キー"']\u003d$ 0 ) ' $ File2に$ファイル2 > $ file1.updated
との引数'0 '上の行の最後の条件additionnal (ので分かりませんでした$キーのNFに有効にする' ) " $キー" 'をawkは。
私は小さなコミュニティのために作ってるんだし、本当に単純なことをしている。
もし私が投稿することができますawfullコードを読むことを恐れないしている^ ^
  #6固定リンク)  
Old 2008年6月10日
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
中毒
  
 

参加日: 2007年1月
場所: Варна 、 България /ミラノ、イタリア
投稿数:2892
引用:
[...]
もし私が投稿することができますawfullコードを読むことを恐れないしている^ ^
はい、もちろん、これで投稿してください。
ここに有益なアドバイスを得る可能性がある。
  #7固定リンク)  
Old 2008年9月12日
s.rajkumar s.rajkumar is offline
登録ユーザー
  
 

参加日: 2008年8月
記事: 1
こんにちは非常に& 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 |レッド

あなたの返事を待って...
米感謝
Closed Thread

ブックマーク

タグ
Solarisの

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

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

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

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




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


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

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