3

4列にfile1数字があり、それぞれ16桁です。

5150782703810496 7071783126930570 9776701040412294 4414890272061604
6426318539518073 5261792065926013 6303463168130122 8332314317620078
7506133106243886 2242241367012197 8275982207923757 7263931623813806
8882831187329643 3184441663826305 1416431572523093 0697142167966828

file2は 16 の検索パターンがあります (ここでは偶然に並べ替えられています) file1

0412294
062438
118732964
157252
17831269305
23813806
24224136701
3323143
381049
441489027206160
441663826305
5926013
66828
68130
82207923
8539518073

今、私は見つけるための解決策を探してrowおりcolumn、 から各パターンfile2を探していますfile1。望ましい結果file3:

1,1=381049
1,2=17831269305
1,3=0412294
1,4=441489027206160
2,1=8539518073
2,2=5926013
2,3=68130
2,4=3323143
3,1=062438
3,2=24224136701
3,3=82207923
3,4=23813806
4,1=118732964
4,2=441663826305
4,3=157252
4,4=66828

で試してgrep -f file2 file1みましたが、見つかりrowませんでしcolumnた。私は Windows を使用しておりawk、残念ながらandを使用できませんgrep。これを達成する方法は?ありがとうございました!sedPerlBash

4

4 に答える 4

4

出力はソートされません。Birei のソリューションはまさにあなたが必要としているものです。

awk '
NR==FNR {
    for (i=1;i<=NF;i++) {
        a[$i]=NR","i 
    }
    next
} 
{ 
    b[$1] 
} 
END {
    for (x in a) { 
        for (y in b) {
            if (index(x,y)>0) {
                print a[x]"="y
            }
        }
    }
}' file1 file2

出力:

4,4=66828
4,1=118732964
3,3=82207923
4,3=157252
4,2=441663826305
2,4=3323143
1,1=381049
2,1=8539518073
3,2=24224136701
1,3=0412294
2,3=68130
1,2=17831269305
2,2=5926013
1,4=441489027206160
3,1=062438
3,4=23813806
于 2013-06-09T21:00:13.590 に答える