नीचे कुछ लाइनों को संपादित करें


0

मुझे एक निश्चित पाठ के साथ एक निश्चित रेखा के नीचे की रेखा को संपादित करने की आवश्यकता है जो मैं एक .txt फ़ाइल का उपयोग कर रहा हूं। विंडोज़ 8 में .bbs या .vbs।

उदाहरण

Account 1
ABC  -         Debit    900
     -         Credit   900
DEF  -         Debit    800
     -         Credit   100

मैं चाहता हूं कि आउटपुट ऐसा हो

Account 1
ABC  -         Debit    900
ABC  -         Credit   900
DEF  -         Debit    800
DEF  -         Credit   100

मुझे लगता है कि इस regex में मदद करता है (खोजने भाग यहाँ देखें) i.imgur.com/sEihzzi.png को खोजने ([A-Za-z]*)(\s+-[^\r\n]*\r\n)([\s]*)- के साथ बदलें $1$2$1- पर्ल या पावती की तरह एक आदेश शायद इस्तेमाल किया जा सकता .. जैसे एक उपकरण है कि नई लाइनों पढ़ सकते हैं और एक नियमित अभिव्यक्ति लागू कर सकते हैं एक पाठ फ़ाइल के लिए।
बार्लोप

यदि संभव हो तो मैं इसे एक बैच फ़ाइल में करना चाहूंगा
Aj Santos

सामान्यीकृत उदाहरणों के साथ समस्या यह है कि वे हमेशा वास्तविक दुनिया से मेल नहीं खाते हैं। क्या हमेशा 6 वें स्थान पर एक हाइफ़न है? आप अंतिम प्रमुख मूल्य को संग्रहीत कर सकते हैं और यदि कोई मौजूद नहीं है तो सम्मिलित करें।
लॉटिंग्स

@LotPings और एक गैर-सामान्यीकृत उदाहरण के साथ समस्या यह है कि जिस तरह से यह आवश्यक है उससे अधिक जटिल है और यह आपके होमवर्क साइट को ऐसा नहीं करता है इसलिए वह पूछने के लिए सही है कि उसने क्या पूछा। इसमें कोई संदेह नहीं है कि यदि आप उसे जवाब दे सकते हैं कि यह कैसे करना है तो वह उसके प्रश्न का उत्तर देगा, जिसका लक्ष्य है। और प्रश्न अक्सर दूसरों के लिए भी उपयोगी होते हैं, जो एक और कारण है कि यदि संभव हो तो बहुत विशिष्ट नहीं है।
बार्लोप

@AjSantos आपको एक कमांड लाइन प्रोग्राम की आवश्यकता है जो दुश्मनों को ढूंढता है और रीगेक्स से प्रतिस्थापित करता है .. और sed नहीं 'cos sed में नई लाइनें नहीं
दिखेंगी

जवाबों:


0

बैच में संपादन का अर्थ है फ़ाइल को फिर से लिखना, इसलिए यह काम कर सकता है:

:: Q:\Test\2018\04\17\SU_1314377.cmd
@Echo off
SetLocal EnableExtensions EnableDelayedExpansion
Set "File=Accounts.txt"
Set "NewFile=Accounts2.txt"

(For /f "delims=" %%A in (%File%) do (
    Set "Line=%%A"
    Set "Debit=!Line:*Debit=!"
    Set "Credit=!Line:*Credit=!"
    If "!Line!" Neq "!Debit!"  Call Set "Account=%%Line:Debit!Debit!=%%"
    If "!Line!" Neq "!Credit!" Call Set "Line=!Account!Credit!Credit!"
    Echo:!Line!
) )> "%NewFile%" 
  • बैच डेबिट / क्रेडिट को मौजूदा लाइन में सब कुछ बदलकर डेबिट / क्रेडिट वैल्यू (प्रमुख स्थान के साथ) निकालता है।
  • यदि वर्तमान लाइन में डेबिट है तो सामने वाला नाम var Account में संग्रहीत है
  • यदि वर्तमान लाइन में क्रेडिट है तो लाइन सामने के संचित मूल्य के साथ फिर से बनाई जाती है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.