फ़ाइल को गैर-अंतःक्रियात्मक रूप से उपयोग करने के लिए संपादित करने के लिए ex
( vi
यह दृश्य विधा है ex
), आप पहले फ़ाइल के पढ़ने के बाद vi कमांड को निष्पादित करने की अनुमति दे सकते हैं +{command}
या उपयोग कर सकते -c {command}
हैं।
ex
एक मानक कमांड लाइन (के समान संपादक है ed
)।
वहाँ भी है vipe
(एक विम कमांड पाइप संपादक) का उपयोग किया जाना चाहिए जो moreutils
पैकेज का हिस्सा है और यह आपको अपने संपादक को यूनिक्स पाइप लाइन के बीच में चलाने और प्रोग्राम के बीच पाइप किए जाने वाले डेटा को संपादित करने की अनुमति देगा।
उदाहरण
सरल मानक इनपुट और पाइप का उपयोग करके आउटपुट इस शेल सिंटैक्स द्वारा प्राप्त किया जा सकता है:
$ ex -sc'%p|q!' <(echo Example)
$ echo Example | ex -sc'%p|q!' /dev/stdin
प्रतिस्थापन के बाद फ़ाइल को कैसे प्रिंट करें इसका सरल उदाहरण यहां दिया गया है:
$ ex /etc/hosts +%s/127/128/ge -sc'%p|q!'
फ़ाइलों को जगह में संपादित करने के लिए और उदाहरण:
$ ex +'%s/127/128/g' -cswq file
$ ex -sc '%s/olddomain\.com/newdomain.com/g|x' file
$ printf '%s\n' 'g/olddomain\.com/s//newdomain.com/g' w q | ex -s file
$ ex -s "$file" <<< $'g/old/s//new/g\nw\nq'
$ ex -sc 'argdo %s/old/new/ge|x' ./**
$ find . -type f -exec ex -sc '%s/old/new/g|x' {} \;
आप भी उपयोग कर सकते हैं -s {scriptin}
ताकि कमांड फ़ाइल से लोड हो, उदाहरण के लिए:
$ printf "%s\n" '%s/foo/test/ge' 'wq' > cmds.vim
$ vim -s cmds.vim -es file
या I / O पुनर्निर्देशन का उपयोग कर:
$ vim file < cmds.vim
एक फ़ाइल को संपादित करने और परिवर्तनों को दूसरे में सहेजने के लिए, निम्न उदाहरण देखें:
$ ex +%s/127/128/g -sc'wq! new_file' /etc/hosts
$ cat /etc/hosts /etc/fstab | vim - -es '+:%s/foo/test/g' '+:wq! file3'
अधिक व्यावहारिक उदाहरण।
RPM विनिर्देशन से वास्तविक उदाहरण
vim -E -s Makefile <<-EOF
:%substitute/CFLAGS = -g$/CFLAGS =-fPIC -DPIC -g/
:%substitute/CFLAGS =$/CFLAGS =-fPIC -DPIC/
:%substitute/ADAFLAGS =$/ADAFLAGS =-fPIC -DPIC/
:update
:quit
EOF
HTML टैग निकालना :
ex -s +'bufdo!/<div.*id=.the_div_id/norm nvatdggdG"2p' +'bufdo!%p' -cqa! *.html
XML टैग हटा रहा है :
ex -s +'%s/<[^>].\{-}>//ge' +%p +q! file.txt
हेडर से स्टाइल टैग हटाना और पार्स किए गए आउटपुट को प्रिंट करना:
curl -s http://example.com/ | ex -s +'/<style.*/norm nvatd' +%p -cq! /dev/stdin
कई जटिल नियमों के साथ पार्स html :
ex -V1 $PAGE <<-EOF
" Correcting missing protocol, see: https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2359 "
%s,'//,'http://,ge
%s,"//,"http://,ge
" Correcting relative paths, see: https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2359 "
%s,[^,]\zs'/\ze[^>],'http://www.example.com/,ge
%s,[^,]\zs"/\ze[^>],"http://www.example.com/,ge
" Remove the margin on the left of the main block. "
%s/id="doc_container"/id="doc_container" style="min-width:0px;margin-left : 0px;"/g
%s/<div class="outer_page/<div style="margin: 0px;" class="outer_page/g
" Remove useless html elements. "
/<div.*id="global_header"/norm nvatd
wq " Update changes and quit.
EOF
और भी उदाहरण:
यह भी देखें:
file
अपने दूसरे कमांडलाइन से दूसरा गिरा सकते हैं ।