आपको लगता है कि उद्धरण गलत हैं। आपको नीचे के रूप में करने की आवश्यकता है
awk -F"," 'BEGIN { OFS = "," } {$2="\"2.4.0\""; print}' test.csv > output.csv
यह GNU awk मैन पेज - 3.2 एस्केप सीक्वेंस में बताया गया है
कुछ पात्रों को स्ट्रिंग स्थिरांक ("foo")या रेगेक्स स्थिरांक ( /foo/) में शाब्दिक रूप से शामिल नहीं किया जा सकता है । इसके बजाय, उन्हें भागने के दृश्यों के साथ प्रतिनिधित्व किया जाना चाहिए, जो कि बैकस्लैश ( \) के साथ शुरू होने वाले चरित्र अनुक्रम हैं । एक एस्केप सीक्वेंस का एक उपयोग स्ट्रिंग में एक डबल-क्वैस कैरेक्टर को निरंतर रूप से शामिल करना है। क्योंकि एक सादा डबल उद्धरण स्ट्रिंग को समाप्त करता है, आपको स्ट्रिंग के \"एक भाग के रूप में एक वास्तविक दोहरे-उद्धरण वर्ण का प्रतिनिधित्व करने के लिए उपयोग करना चाहिए ।
जहाँ तक मैं व्यवहार के कारण को समझ सकता था, awkलगता है कि 2.4.0आपके ओपी के अतिरिक्त उद्धरणों के साथ एक संख्यात्मक शब्द के रूप में व्याख्या की गई है और पहले डॉट के बाद सटीक खोने का फैसला किया है।
अर्थात
$2="\""2.4.0"\""
बस बन जाता है
$2=""2.4.0""
जो awkअब स्ट्रिंग के रूप में नहीं समझता है। आप बस करके इस व्यवहार को पुन: पेश कर सकते हैं
awk 'BEGIN { print ""2.4.0"" }'
2.40
जो तब होता है जब आप करते हैं
awk 'BEGIN { print 2.4.0 + 0 }'