मैंने आगे बढ़कर C ++ में आपके लिए थोड़ी उपयोगिता बनाई, मुझे आशा है कि यह आपके लिए उपयोगी है। बस इसे संकलित करें और आनंद लें।
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc,char *argv[])
{
fstream i,
s,
r,
o;
string s_str,
r_str,
buf;
int n;
char ch,
s_in = 1,
s_out = 1;
for(int n = 1; n < argc; n += 2)
{
if(argv[n][0] == '-')
{
switch(argv[n][1])
{
case 'i':
i.open(argv[n+1], fstream::in);
s_in = 0;
break;
case 's':
s.open(argv[n+1], fstream::in);
break;
case 'r':
r.open(argv[n+1], fstream::in);
break;
case 'o':
o.open(argv[n+1], fstream::out);
s_out = 0;
break;
default:
cerr << "Usage: helper [-i input_file] <-s search_file> <-r replace_file> [-o output_file]";
return 0;
}
}
}
if(!s_in && !i.is_open())
{
cerr << "Input could not be opened.";
return -1;
}
if(!s.is_open())
{
cerr << "Search could not be opened.";
return -1;
}
if(!r.is_open())
{
cerr << "Replace could not be opened.";
return -1;
}
if(!s_out && !o.is_open())
{
cerr << "Output could not be opened.";
return -1;
}
/* get s and r in memory */
while((ch = s.get()) != EOF)
s_str += ch;
s.close();
while((ch = r.get()) != EOF)
r_str += ch;
r.close();
buf = "";
while((s_in ? (ch = cin.get()) : (ch = i.get())) != EOF)
{
buf += ch;
for(n = 0; n < buf.length(); n++)
if(buf.at(n) != s_str.at(n))
{
s_out ? (cout << buf) : (o << buf);
buf = "";
break;
}
if(n == s_str.length())
{
s_out ? (cout << r_str) : (o << r_str);
buf = "";
}
}
s_out ? (cout << buf) : (o << buf);
if(!s_in)
i.close();
if(!s_out)
o.close();
return 0;
}
इसके साथ संकलित:
g++ -o replacer replacer.cpp
नमूना उपयोग:
input.txt:
1
2
3
4
5
search.txt
3
replace.txt
Three
आदेश
./replacer -i input.txt -s search.txt -r replace.txt -o output.txt
output.txt
1
2
Three
4
5
यदि आपके कोई और प्रश्न हैं, तो कृपया पूछें। मुझे आशा है कि यह पूरा करता है कि आप क्या करना चाहते थे। (यह स्टडआउट को भी स्वीकार करता है, और यदि आप ommit -i और -o) को स्टैडआउट करना चाहते हैं, तो निश्चित रूप से नई कथनों, उद्धरणों, ect .. के कारण कोई समस्या नहीं होगी क्योंकि वे अलग-अलग फ़ाइलों में हैं।