Как добавить пользовательские окончания строк в текстовом файле (например, я хочу добавить конец строки после всех периодов) - PullRequest
1 голос
/ 26 мая 2010

У меня есть несколько текстовых файлов, в которые я хочу добавить строку, заканчивающуюся после каждого периода.

Мне интересно, есть ли способ сделать это путем замены всех периодов на \ n \ n, при условии, что у меня правильная кодировка (unix).

Кто-нибудь знает, как я это сделаю? Замените. На. \ N \ n, а затем сохраните как другой файл?

Спасибо!

Ответы [ 5 ]

2 голосов
/ 26 мая 2010
perl -pne 's/\./\.\n/g' < input_file > output_file
1 голос
/ 26 мая 2010

Если вы настаиваете на том, чтобы сделать это в C, вы можете сделать что-то вроде этого:

#include <stdio.h>

int main ()
{
  FILE *inFile, *outFile;
  int c;
  inFile=fopen("infile.txt","r");
  outFile=fopen("outfile.txt","w"); 
  if (inFile==NULL || outFile==NULL) perror ("Error opening file");
  else
  {
    while((c = fgetc(inFile)) != EOF){
      if (c == '.'){
        fputc('\n',outFile);
        fputc('\n',outFile);
      }else{
        fputc(c, outFile);
      }   

    } 
    fclose (inFile);
    fclose (outFile);
  }
  return 0;
}
1 голос
/ 26 мая 2010

Игорь Кривокон правильно понял, но его можно улучшить как

perl -p -i.orig -e 's/\./\.\n/g' input_files ...

, который принимает любое количество входных файлов, редактирует их на месте и сохраняет оригинал в input_file.orig в качестве резервной копии.Если вы не хотите создавать резервные копии, используйте -i.

1 голос
/ 26 мая 2010

sed s/\\./.\\n\\n/g file > newfile

Возможно, вы захотите sed s/\\.\ */.\\n\\n/g file > newfile, который избавит от конечных периодов пробелов.

0 голосов
/ 26 мая 2010

Простой, но медленный метод:
1. Откройте исходный файл для чтения.
2. Откройте целевой файл для записи.
3. Пока не EOF исходного файла:
3.1. читать символ из исходного файла.
3.2. записать символ в целевой файл.
3.3. если char == '.' затем напишите "\ n \ n" в целевой файл.
3.4. Конец в то время
4. Закройте целевой файл.
5. Закройте исходный файл.

Более быстрый метод заключается в выделении буфера, чтении в буфер и разборе на «.». Запишите все символы с точностью до «.». Напишите несколько новых строк. Разбери еще немного. Читайте больше и повторяйте до EOF.

...