Если Вы не находитесь на очень старых/низких аппаратных средствах спецификации, работая gnome/gtk
приложения в KDE
(или kde/qt
приложения в GNOME
) не должен оказывать значимое влияние на производительность.
Когда Вы идете KDE
, qt/kde
освобождает уже загружаются в памяти, gtk/gnome
освобождает не. Это только при увольнении a gtk/gnome
приложение это gtk/gnome
освобождает загружаются, при этом побочный эффект является более высоким использованием памяти (дополнительный, освобождает, загружаются в память), и возможно (на медленном HDD) более длительное начальное время запуска gtk
приложение.
Есть жизнь за пределами одноклассников ...
Съемники предложения никогда не готов, всегда есть еще одна деталь, чтобы исправить: Perl Multiliner!
#!/usr/bin/perl
use strict;
my $pont=qr{[.!?]+}; ## pontuation
my $abrev=qr{\b(?:Pr|Dr|Mr|[A-Z])\.}; ## abreviations
$/="";
while(<>){ chomp; ## for each paragraph,
s/\h*\n\h*/ /g; ## remove \n
s/($pont)\h+(\S)/$1\n$2/g; ## pontuation+space
s/($abrev)\n/$1 /g; ## undo \n after abreviations
print "$_\n\n";
}
Итак с:
A single ‘-’ operand is not really an option ! It stands for
standard input. Or for standard output ? For example:
‘smth -’ reads from stdin; and is equal
to plain ‘smth’... Could it appear as any operand that
requires a file name ? Certainly !
Robert L. Stevenson wrote Dr. Jekyll and Mr. Hyde. Back in 12.12.1886
the end
Выход:
A single ‘-’ operand is not really an option !
It stands for standard input.
Or for standard output ?
For example: ‘smth -’ reads from stdin; and is equal to plain ‘smth’...
Could it appear as any operand that requires a file name ?
Certainly !
Robert L. Stevenson wrote Dr. Jekyll and Mr. Hyde.
Back in 12.12.1886
the end
Попробуйте:
awk -F. '{ for (i=1;i<=NF;i++) printf "%s.\n",$i ;} ' < input_file > output_file
где
.
(точка) в качестве сепаратора, Попробуйте:
sed -e :1 -e 's/\([.?!]\)[[:blank:]]\{1,\}\([^[:blank:]]\)/\1\
\2/;t1'
на входе типа:
Sentence 1. Sentence 1.2? Sentence 2!? Sentence 3.
Sentence 4... Sentence 5.
дает:
Sentence 1.
Sentence 1.2?
Sentence 2!?
Sentence 3.
Sentence 4...
Sentence 5.
(и является POSIX).
В задаче есть некоторые подводные камни. Одним из вариантов может быть:
sed 's/\([.?!;]\) */\1\n/g' file.txt
Это подстановка символов в заданном наборе ([...?! ;]
, добавить двоеточие или удалить точку с запятой, как вам удобно), после чего дополнительные пробелы ( *
) на заменяемый символ (\1
расширяются до совпадения между \(
и \)
) и новой строкой (\n
).
Я не могу быть уверен, не увидев фактический пример ваших данных, но то, что вы , вероятно, ищут добавление новой строки после каждого вхождения .
, !
и ?
. Я не знаю, как вы хотите разобраться с запятой (;
; ; ; ), поскольку они не совсем отмечают конец предложения. Это зависит от вас.
В любом случае, вы можете попробовать SED
:
$ echo 'This is a sentence! And so is this. And this one?' |
sed 's/[.!?] */&\n/g'
This is a sentence!
And so is this.
And this one?
///
- это оператор замещения. Его общий формат составляет S / PAT / замена
, и он заменит PAT
с заменой
. G
в конце запускают его замену на все вхождения PAT
. Без этого он остановится на первом. &
- это специальное SED
, что означает «все, что было сопоставлено». Итак, здесь мы подставляем любой из .
, !
или ?
с тем, что было сопоставлено и новая линия.
Если ваш текст может включать в себя аббревиатуры, такие как E.g.
Возможно, вы захотите заменить только если следующее письмо является капиталом:
$ echo 'This is a sentence! And so is this. And this one? Negative, i.e. no.' | sed 's/\([.!?]\) \([[:upper:]]\)/\1\n\2/g'
This is a sentence!
And so is this.
And this one?
Negative, i.e. no.
Обратите внимание, что это не будет иметь дело с предложениями, такими как DR. Джонс сказал привет.
правильно, поскольку оно предположит, что .
После DR
определяет предложение, учитывая, что следующее письмо является капитализированным. Тем не менее, мы сейчас приближаемся к уровню сложности, который выходит за пределы простого формата Q & A и фактически требует полноценного парсера натурального языка.
sed 's/\([.!?] *\)\{0,1\}/\1\\/g' <infile | xargs printf %s\\n
У меня раньше была эта штука с fold
- и это было быстро - но я понял, что могу сделать то же самое с xargs
без предварительной обработки ввода или реализации любого sed
переходил в цикл, если я просто экранировал с обратной косой чертой все, что не было завершающим символом или любыми последующими пробелами.
Таким образом, в приведенном выше операторе sed
будет соответствовать либо нулевой строке, либо завершающей последовательности для каждого символа (не в последовательности) , который встречается во входных данных. В правой части sed
заменяет либо нулевую строку, либо завершающую последовательность на \ 1
, а затем вставляет обратную косую черту. В результате каждый символ, кроме одного из .!?
, за которым следует хотя бы один пробел, получает экранирование обратной косой черты \
. Этот включает строку \ n
, которую sed
вставляет после каждой замены при записи в стандартный вывод.
Поскольку xargs
полностью исключит экранированную обратную косую черту \ n
ewline и разделит аргументы, которые он передает своей названной утилите на неэкранированные пробелы, printf
завершается печать всех строк, подобных предложению, которые xargs
считывает во входных данных без каких-либо конечных пробелов и в одной строке на каждый. Более того - он делает это партиями, приближающимися к размеру ARGMAX
- как можно больше за раз. И, конечно же, sed
также должен выполнять свою работу довольно быстро - ему достаточно сделать только одну глобальную замену для каждой строки ввода.
Результаты выглядят так:
Некоторые Lorem Ipsum взяты с www.lipsum.com :
sed 's/\([.!?] *\)\{0,1\}/\1\\/g' <<LIPSUM | xargs printf %s\\n
Section 1.10.32 of "de Finibus Bonorum et Mal
orum", written by Cicero in 45 BC
"Sed ut perspiciatis unde omnis iste natus er
ror sit voluptatem accusantium doloremque lau
dantium, totam rem aperiam, eaque ipsa quae a
b illo inventore veritatis et quasi architect
o beatae vitae dicta sunt explicabo.
Nemo enim ipsam voluptatem quia voluptas sit
aspernatur aut odit aut fugit, sed quia conse
quuntur magni dolores eos qui ratione volupta
tem sequi nesciunt.
Neque porro quisquam est, qui dolorem ipsum q
uia dolor sit amet, consectetur, adipisci vel
it, sed quia non numquam eius modi tempora in
cidunt ut labore et dolore magnam aliquam qua
erat voluptatem.
Ut enim ad minima veniam, quis ...
...
reiciendis voluptatibus maiores alias consequ
atur aut perferendis doloribus asperiores rep
ellat." 1914 translation by H.
LIPSUM
... что печатает ...
Section 1.10.32 of "de Finibus Bonorum et Malorum", written by Cicero in 45 BC
"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
Ut enim ad minima veniam, quis ...
...
reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat." 1914 translation by H.