/ / बैश: बड़ी फ़ाइलों में युग के लिए मानव पठनीय समय में कनवर्ट करें - बैश, युग

bash: बड़ी फ़ाइलों में युग के लिए मानव पठनीय समय कनवर्ट करें - बाश, युग

मेरे पास विशाल सीएसवी फाइलें (> 50 जीबी) हैं जिनमें निम्नलिखित कॉलम हैं: -

"समय", "डेटा कॉलम"

टाइम कॉलम में "2015-07-10 00: 17: 45.000 GMT" जैसा डेटा है। मैं मानव पठनीय रूप के बजाय समतुल्य युग को प्रतिबिंबित करने के लिए समय स्तंभ में परिवर्तित करना चाहता हूं।

दूसरी फ़ाइल बनाए बिना ऐसा करने का सबसे तेज़ तरीका क्या हो सकता है? (यह सीएसवी फाइल मूल रूप से एक पायथन स्क्रिप्ट का आउटपुट है)।

उत्तर:

उत्तर № 1 के लिए 1
date --date="2015-07-10 00:17:45.000 GMT" "+%s"

प्रिंट करेंगे

1436487465

बाकी काम करने के लिए आप कट का उपयोग कर सकते हैं:

#!/bin/bash
while IFS="" read -r line || [[ -n $line ]]; do
timefield=$(echo "$line" | cut -f1 -d, | tr -d """)
epochal=$(date --date="$timefield" "+%s")
restofline=$(echo "$line" | cut -f2- -d,)
echo "$epochal,$restofline"
done <$1

उपरोक्त स्क्रिप्ट का उपयोग करने के लिए इसे केवल एक फ़ाइल में सहेजें, इसे निष्पादित करें और पहले तर्क के रूप में पढ़ने के लिए फ़ाइल नाम की आपूर्ति को चलाएं।

तो inp.tst के साथ:

"2015-07-10 00:17:45.000 GMT","misc data","blah"
"2015-07-10 00:18:45.000 GMT","more data","misc"

आप उपयोग कर सकते हैं:

./fixtimes.sh inp.tst

लेना

1436487465,"misc data","blah"
1436487525,"more data","misc"