आपको लगता है कि उद्धरण गलत हैं। आपको नीचे के रूप में करने की आवश्यकता है
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 }'