LINUX.ORG.RU

Как дописать инфу в файл, чтобы она...


0

0

Есть файл. В нем всего одна строка типа:
acl class_user proxy_auth_regex
Мне нужно добавлять имена пользователей в конец этой строки через пробел. С помощью чего это можно сделать? cat >> ... добавляет в конец файла. Нужно именно в конец строки. Спасибо.

★★★

Ответ на: комментарий от KOPEHb

cat old_file | sed 's/^\(acl class_user proxy_auth_regex.*\)$/\1 новое_поле/' > new_file

Возможны мелкие неточности - проверять тыком

anonymous
()
Ответ на: комментарий от KOPEHb

Просто Just For Fun решил на С++ реализовать. Хоть это и не dev, но всё же.

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main(int argc, char *argv[]) {
	
	if(argc==1) {
		cerr << "Usage: cat <filename> <string to add>" << endl;
		return 1;
	}
	const string name = string(" ") + argv[2] + string("\n");
	
	ifstream inputFile(argv[1]);
	if(!inputFile.fail()) {
		
		/* Determine file length */
		int length;
		char *buffer;
		inputFile.seekg (0, ios::end);
  		length = inputFile.tellg();
  		inputFile.seekg (0, ios::beg);
		
		/* Read first string from file */
		buffer = new char[length];
		inputFile.read(buffer,length);
		for(unsigned short i=0; i<length; i++){
			if(buffer[i]=='\n') buffer[i]='\0';
		}
		
		/* Concatenate strings */
		string outputString = string(buffer) + name;
		delete [] buffer;
		inputFile.close();
		
		/* Save string into file */
		ofstream outputFile("file.txt");
		if(!outputFile.fail()) {
			outputFile.write(outputString.c_str(),outputString.length());
			outputFile.close();
		}
	}else{
		cerr << "Failed to open file named: " << argv[1] << endl;
		return 1;
	}
	return 0;
}

Selecter ★★★★
()
Ответ на: комментарий от Selecter

Это даже не гвозди микроскопом или щи лаптем, это как мотопилой побриться...

Howler
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.