विम खोज से sed में परिवर्तित


1

मेरे पास कई वर्गों के साथ एक लंबा लेटेक्स दस्तावेज़ है। मैं यह जांचना चाहता हूं कि दस्तावेज़ के सभी अनुभाग भरे हुए हैं। इसलिए मैं किसी भी समय खोजता हूं कि अनुभाग शीर्षक, somehitespace को समाप्त करने के लिए '}' है, और फिर अगले खंड को शुरू करने वाला '\' है (यह इससे बहुत दूर है एक आदर्श खोज, लेकिन यह मेरे द्वारा ठीक है।)

विम में मैं का उपयोग करें

/}\_s\\ 

जो ठीक काम करता है। हालाँकि, मैं कमांड लाइन पर खोज को दोहराने के लिए संघर्ष कर रहा हूँ।

मैं सामान्य रूप से grep का उपयोग करता हूं, लेकिन यह एक बहुस्तरीय मैच है, इसलिए यह बाहर है। मुझे sed के साथ बहुत कम अनुभव है, लेकिन मैंने यह कोशिश की है:

sed -e '/\}\s\\/p' file.tex

और यह मुझे सब कुछ देता है (संभवत: क्योंकि यह उस बहु-फलक को छाप रहा है जो मेल खाता है - पूरी फाइल)

मैच की पहली पंक्ति, मुझे केवल कहने के लिए मैं इस सेड कमांड को कैसे सुधार सकता हूं?

जवाबों:


2

sed, जैसे grep, फ़ाइल लाइन को लाइन से प्रोसेस करता है। इसके अलावा, यह सब कुछ प्रिंट करता है, जब तक कि आप -nविकल्प निर्दिष्ट नहीं करते (या आप dकमांड का उपयोग करते हैं )।

आप पर्ल की कोशिश कर सकते हैं:

perl -0777 -ne 'print $1 while /(\}\s*\\)/g' file.tex
  • -0777 बल्कि पूरी फाइल को पढ़ता है और फिर उसे लाइन से पढ़ता है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.