जवाबों:
आप ऐसा करने के sed
लिए उपयोग कर सकते हैं :
sed -i.bak 's/^/##/' file
यह लाइन की शुरुआत ( ^
) के साथ बदल देता है ##
।
-i.bak
स्विच के साथ , sed
फ़ाइल को अंदर जगह देता है, लेकिन एक्सटेंशन के साथ एक बैकअप प्रतिलिपि बनाता है .bak
।
sed 's/^\(.*\)$/##\1/'
, लेकिन यह बहुत अच्छा है।
यहाँ पर्ल का उपयोग करके इस समस्या का समाधान है
perl -e 'while (<>) {print "##$_"}' < infile > outfile
-p
स्विच भी उपयोगी है: perl -pe 's/^/##/' infile > outfile
। ( -i[extension]
टारगेट फ़ाइल को इन-प्लेस करने के लिए स्विच भी है।) perldoc.perl.org/perlrun.html#%2a-p%2a
जबकि हम इस पर हैं:
gawk -i inplace '{print "##"$0}' infile
यह GNU awk 4.1.0+ के लिए (तुलनात्मक रूप से नया) इनलेट संपादन प्लगइन का उपयोग करता है ।
यहाँ एक bash
तरीका है:
while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile
( में bash
खोल , चल read -r
कोई दूसरा तर्क के साथ की तरह काम करता IFS= read -r REPLY
।)
यह शैलीगत रूप से बीवी_35 के पर्ल समाधान से प्रेरित है , जिसे मैं मानता हूं कि यह बहुत बड़ी फ़ाइलों के लिए बहुत तेज चलता है, क्योंकि perl
पाठ प्रसंस्करण की बात आती है तो शेल की तुलना में अधिक कुशल होने की उम्मीद की जा सकती है।
आप पूर्व मोड में विम का उपयोग कर सकते हैं:
ex -sc '%s/^/##/|x' file
%
सभी लाइनों का चयन करें
s
विकल्प
x
सहेजें और बंद करें
अजगर के मानचित्रण समारोह और पुनर्निर्देशन स्टड के साथ किया जा सकता है:
$ cat input.txt
lorem ipsum
quick brown fox
hello world
$ python -c 'import sys;print "".join(map(lambda x: "##"+x,sys.stdin.readlines()))' < input.txt
##lorem ipsum
##quick brown fox
##hello world
आउटपुट को नई फ़ाइल में सहेजें और मूल के बजाय इसका उपयोग करें
sed 's/^/##/' -i file
। इस मामले में, यह पसंद किया जाएगा क्योंकि यह गलत नहीं हो सकता। अन्य मामलों में, इस कमांडdiff -u file.bak file
को मतभेदों को देखने के लिए जोड़ा जा सकता है (यदि आवश्यक हो, तो इसके माध्यम से पाइप करेंless
)। यदि यह काम करने की पुष्टि करता है, तो बैकअप हटाया जा सकता है। अन्यथा इसे एक साधारण से बहाल किया जा सकता हैmv file.bak file
।