У меня есть файл, пронизанный такими вещами:

-POEM-
>> The big brown fox
>> jumps over the
>> lazy dog.
The end.

Я хочу избавиться от "\n >>" и просто превратить это в личку:

-POEM-
The big brown fox jumps over the lazy dog.
The end.

Я пытаюсь следующее, все из которых отказываются работать:

perl -pe 's/\r?\n>>//g' task.tex
tr '\n\>\>' '' < task.tex 
sed -i ':a;N;$!ba;s/\n>>//g' task.tex 

Что я делаю неправильно?

3 ответа3

1

Почему вы должны пережить столько неприятностей? Вот что я только что сделал с твоим фрагментом текста.

  1. Откройте файл в GEdit.

  2. Держите курсор в начале второй строки

  3. Используйте CTRL + H (Найти и заменить)

  4. Найти для >> и заменить на пробел

  5. Найти для \n и заменить на пробел

Убедитесь, что вы используете REPLACE ALL в обоих случаях (4 и 5).

Это то, что я сделал, и это сработало :)

0

Предполагая, что текст находится в файле с именем x.txt:

tr -d '\n>>' < x.txt | sed -e 's/-POEM-/&\n/' -e 's/\./&\n/g'
0

Это сработало для меня:

while read line; do
         line1=`echo $line`;
         if [ `echo $line1 | grep "^>" | wc -l` -eq 1 ];
         then
                 var1=`echo $line1 | sed 's/^...//'`;
                 line2=`echo $line2 $var1`;
         else
                 echo $line2;
                 echo $line1;
         fi;
done < task.tex

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .