बैश: मिलान करने वाले नंबरों की अदला-बदली, उपयोगकर्ता नाम के साथ दूसरी फ़ाइल में [बंद]


0

मैं "फ़ाइल 1" में प्रत्येक पंक्ति के अंतिम नंबर को "फ़ाइल 2" से मेल खाने वाले उपयोगकर्ता नाम के साथ पोस्ट किया गया परिणाम प्राप्त करना चाहता हूं।

फ़ाइल 1:

28/02/13 46.149002 259
22/03/13 68.234001 404
14/03/16 69.835007 66
29/01/14 87.083008 540
14/03/16 106.516006 874
14/03/16 201.552002 260
03/12/12 207.521011 278
18/08/16 234.778015 1002

फ़ाइल 2:

user5 874
user2 404
user8 1002
user4 540
user1 259
user6 260
user7 278
user3 66

यह केवल "फ़ाइल 2" का एक हिस्सा है। फ़ाइल में वास्तव में बहुत अधिक उपयोगकर्ता हैं।

परिणाम:

28/02/13 46.149002 उपयोगकर्ता 1
22/03/13 68.234001 उपयोगकर्ता 2
14/03/16 69.835007 उपयोगकर्ता 3
29/01/14 87.083008 उपयोगकर्ता 4
14/03/16 106.516006 उपयोगकर्ता 5
14/03/16 201.552002 user6
03/12/12 207.521011 उपयोगकर्ता 7
18/08/16 234.778015 उपयोगकर्ता 8


2
-1। आपको यहां एक संपूर्ण समाधान मिल सकता है लेकिन सामान्य तौर पर हम एक स्क्रिप्ट लेखन सेवा नहीं हैं। प्रश्न आपके शोध प्रयास को नहीं दिखाता है बिल्कुल भी । अब तक तुमने क्या प्रयास किये हैं? उदाहरण: "मुझे लगता है कि इसे (उपकरण का नाम) और (किसी अन्य उपकरण का नाम) के साथ किया जा सकता है। मुझे यह समाधान मिल गया है (लिंक दें) लेकिन मुझे अपनी आवश्यकताओं को संशोधित करने में परेशानी हो रही है। मेरी स्क्रिप्ट अब तक है। पेस्ट कोड)। " आपको वह अच्छा नहीं बनना है लेकिन हमें दिखाओ आप इस प्रश्न को यहाँ पोस्ट करने और चुस्त बैठने से अधिक कुछ किया है। सुधार करने पर मुझे एक टिप्पणी छोड़ दो ( संपादित करें ) आपका सवाल और मैं अपने अपमान को रद्द कर दूंगा।
Kamil Maciorowski

1
मैं इस प्रश्न को ऑफ-टॉपिक के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि यह व्यापक समुदाय के लिए उपयोगी होने के लिए बहुत विशिष्ट है।
Patches

जवाबों:


2

मुझे लगता है कि आपकी फ़ाइलों में यह सख्त प्रारूप है जहां रिक्त स्थान केवल अलग कॉलम (किसी उपयोगकर्ता नाम आदि के अंदर कोई स्थान नहीं है)। फिर यह काम करना चाहिए (कम से कम लिनक्स पर, मेरा परीक्षण कुबंटु है):

while read date value number ; do printf "%s %s %s\n" "$date" "$value" "$(grep " $number" file2 | head -n 1 | cut -f 1 -d " ")" ; done <file1

कुछ स्पष्टीकरण:

  1. आज्ञा से पढ़ता है file1 ( … <file1 )।
  2. जब तक यह एक पंक्ति पढ़ सकता है ( while read … )…
  3. ... यह प्रिंट करता है ( printf … ) तीसरे क्षेत्र के साथ…
  4. … प्रभाव ( $( … ) ) का …
    1. … दी गई संख्या के अंदर एक लाइन के लिए खोज file2 ( grep …, प्रमुख स्थान पर ध्यान दें: " $number" )…
    2. ... जहां केवल पहला मैच लिया गया है ( head …, शायद ज़रुरत पड़े), …
    3. ... और उसके बाद केवल पहला कॉलम बचा है ( cut … )।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.