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



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

Closed Thread
English Japanese Spanish French German Portuguese Italian を搭載 Powered by Google
 
スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2008年8月28日
登録ユーザー
 

参加日: 2007年11月
投稿: 37
Perlの- 2配列の比較

こんにちはすべて、

私は以下のスクリプトを記述しては、ファイル1とファイル2の内容をこのようなものになるだろう:

ファイル1 :

56790,0,0,100998765
89756,0,0,100567876
867645,1,3,678777654

ファイル2 :

56790,0,0,100998765
65776,0,0,4766457890
+5896,0,0,675489876

何をやってみたいし、各行に4個の場合、カンマで区切った値をチェックされ、他のファイルをどこかに存在する。これは明らかに一線を上記の場合には、両方のファイル56790,0,0,100998765ているので、私はtrueを返すことにしたいのですがされています。私は、他のファイルに存在しない場合はfalseを返すすべての行をしたいと思います。各ファイル形式の列の値の順序も重要です。

これまでのところ私は:

$ input_file1 \u003d " home/file1 " ;
( DAT1 、 $ input_file1オープン) | |印刷する"ファイル1を開けませんでした! " ;
@ raw_data1 \u003d <DAT1> ;
近い( DAT1 ) ;

$ input_file2 \u003d " home/file2 " ;
( DAT2 、 $ input_file2オープン) | |印刷する"ファイル2を開くことができません! " ;
@ raw_data2 \u003d <DAT2> ;
近い( DAT2 ) ;

ライン( @ raw_data1 ) $ foreachの

( $ライン)チョップ;
( $ v1 、 $ v2では、 $ v3の、 $ v4の) \u003d分割(/,/,$ライン) ;
( $ v1 ... ...もし... ...

このポイントは、私は動けなくなるのだ。私はたくさんのは、各配列からたった1つの値を比較するが、私は私のすべてのカンマ区切りの値の4まったく同じ順序で、他の配列に存在していることを確認する例を見たことがある。

任意のアイデアですか?

事前に、感謝します。
スポンサーリンク
  #2固定リンク)  
Old 2008年8月28日
時代 era is offline Forum Advisor  
Herder of Useless Cats (On Sabbatical)
 

参加日: 2008年3月
場所: /there/is/only/bin/sh
投稿数: 3652
慣習的なソリューションは、最初のファイルを読むには、ハッシュし、ハッシュキーの場合、 2番目のファイルからファイルを読むには明らかに、最初の行に存在し、存在しています。
  #3固定リンク)  
Old 2008年8月29日
登録ユーザー
 

参加日: 2007年6月
所在地:中国北京
投稿数: 1,132
やあ、

ために、いくつかの他のコマンドを使用することが分かった。

以下のいずれかを試してください:


コード:
paste -d"," file1 file2 > temp.txt
awk '{
if ($1=$5 && $2==$6 && $3==$7 && $4==$8)
print true
}' temp.txt
rm temp.txt

  #4固定リンク)  
Old 2008年8月29日
時代 era is offline Forum Advisor  
Herder of Useless Cats (On Sabbatical)
 

参加日: 2008年3月
場所: /there/is/only/bin/sh
投稿数: 3652
つまり、入力データの2つのパスを必要とし、一時ファイルを使用しています。 awkはあなただけでは良い結果を出すことができます。


コード:
awk 'NR == FNR { a[$0]++; next } { if (a[$0]) next; print }' file1 file2

...ファイル1はファイル2には存在していないすべての行を出力します。

に同じ Perlの


コード:
perl -nle 'if ($. == ++$i) { $a{$_}++; close ARGV if eof; next; }
print unless $a{$_}' file1 file2

  #5固定リンク)  
Old 2008年9月1日
登録ユーザー
 

参加日: 2007年11月
投稿: 37
完璧で、感謝します。

私は使用していた最後の Perlの soultionは見事に動作します。
スポンサーリンク
Closed Thread

ブックマーク

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

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

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

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


その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
Perlやネット: : LDAPのは、オブジェクトや配列のクエリ mikie シェルプログラミングとスクリプティング 3 2008年8月22日 04:05午後
Perlの配列とSubstituion ポパイ シェルプログラミングとスクリプティング 1 2008年5月6日 06:29午前
perlの関数や配列 mercuryshipzz シェルプログラミングとスクリプティング 1 2008年1月17日 03:18午後
shには2つの配列の比較、または2つのフィールドを比較する rijeshpp シェルプログラミングとスクリプティング 0 2007年10月31日 02:47午前
perlの配列 crashnburn 高レベルのプログラミング 2 2002年8月5日 06:53午後



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


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

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