शाब्दिक स्ट्रिंग के साथ sed - इनपुट फ़ाइल नहीं


96

यह आसान होना चाहिए: मैं एक शाब्दिक स्ट्रिंग के खिलाफ sed चलाना चाहता हूं , इनपुट फ़ाइल नहीं। यदि आप आश्चर्य करते हैं कि ऐसा क्यों है, उदाहरण के लिए, चर में संग्रहीत मूल्यों को संपादित करें, जरूरी नहीं कि पाठ डेटा।

जब मैं करता हूं:

sed 's/,/','/g' "A,B,C"

जहाँ A, B, C वह शाब्दिक है जिसे मैं A ',' B ',' C 'में बदलना चाहता हूँ

मुझे मिला

Can't open A,B,C

जैसे कि यह सोचता है कि ए, बी, सी एक फाइल है।

मैंने इसे गूंजने की कोशिश की:

echo "A,B,C" | sed 's/,/','/g' 

मुझे एक संकेत मिलता है।

इसे करने का सही तरीका क्या है?

जवाबों:


151

आपके पास एक एकल उद्धरण संघर्ष है, इसलिए उपयोग करें:

 echo "A,B,C" | sed "s/,/','/g"

अगर उपयोग कर रहे हैं , आप भी कर सकते हैं ( <<<एक है here-string):

sed "s/,/','/g" <<< "A,B,C"

लेकिन नहीं

sed "s/,/','/g"  "A,B,C"

क्योंकि sedतर्क के रूप में फ़ाइल की अपेक्षा करें

संपादित करें :

यदि तुम प्रयोग करते हो या कोई अन्य:

echo string | sed ...

1
अजीब, मेरे लिए काम नहीं करता है ... यह महसूस करते हुए कि कुछ समय पहले यह पोस्ट किया गया था, लेकिन अजीब बात है कि अगर समस्या है
सुपर हीरो

10

आप चाहते हैं जैसे काम करता है:

echo "A,B,C" | sed s/,/\',\'/g

5

मेरे संस्करण को बैश स्क्रिप्ट में चर का उपयोग करते हुए:

किसी भी बैकस्लैश का पता लगाएं और आगे की स्लैश के साथ बदलें:

input="This has a backslash \\"

output=$(echo "$input" | sed 's,\\,/,g')

echo "$output"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.