Решено: удалить в тексте переносы строк
Модератор: Bizdelnick
-
- Сообщения: 17
- ОС: slackware,debian
Решено: удалить в тексте переносы строк
имеется plain text, каким то мудаком разбитый переносами по 80 символов. как удалить эти переносы. но оставить пробелы перед абзацами?
заранее благодарю.
заранее благодарю.
-
- Сообщения: 339
- ОС: Debian GNU/Linux
Re: Решено: удалить в тексте переносы строк
В любом текстовом редакторе - "Поиск и замена".
Арфы нет - возьмите бубен...
-
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Решено: удалить в тексте переносы строк
cat plain.txt | tr "\n" " " > new.txt
tr "\n" " " < plain.txt > new.txt
P. S. И не следует называть чудаками на букву "м" незнакомых (и, скорее всего, ничем вам не обязанных) людей только потому, что вам не понравилось форматирование текстового файла. ;)
tr "\n" " " < plain.txt > new.txt
P. S. И не следует называть чудаками на букву "м" незнакомых (и, скорее всего, ничем вам не обязанных) людей только потому, что вам не понравилось форматирование текстового файла. ;)
-
- Сообщения: 17
- ОС: slackware,debian
Re: Решено: удалить в тексте переносы строк
мне надо ещё учитывать новые абзаци (они выглядят как "\n " - новая строка и пробелы в начале строки). по идее должно работать:
cat plain.txt | tr "\n " "***" > new.txt
cat new.txt | tr "\n" " " > tmp.txt
cat tmp.txt | tr "***" "\n" > new.txt
но вместо нормального результата выходит ч.з.ч. кажется, дело в том, что текст 'выровнен' - сплошь и рядом встречаются два и больше пробелов вместе.
обьясните, пожалуйста, в чем тут дело? таки напишите скрипт Работающий.
-
- Сообщения: 268
- ОС: Windows XP
Re: Решено: удалить в тексте переносы строк
Загрузить/импортировать файл в текстовый процессор как "текстовый файл" — концевые символы перевода строки должны исчезнуть.
Ротор поля наподобие дивергенции градуирует себя вдоль спина и там внутре ево неонка.
-
- Сообщения: 17
- ОС: slackware,debian
-
- Сообщения: 268
- ОС: Windows XP
Re: Решено: удалить в тексте переносы строк
AbiWord, OpenOffice Writer, MS Word могут делать из текстового файла документ с правильной разбивкой на абзацы без строк с концевыми символами и сохранять этот документ в обычном текстовом файле.
Ротор поля наподобие дивергенции градуирует себя вдоль спина и там внутре ево неонка.
-
- Сообщения: 1661
- Статус: Drinker with computing problems
- ОС: kubuntu 8.04
Re: Решено: удалить в тексте переносы строк
Мне идея понравилась. Что же не так? Покажите, плиз, исходный текст (можно кусочек) и результат выполнения первой команды.
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
The answer is blowin' in the wind.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Решено: удалить в тексте переносы строк
Код: Выделить всё
sed -rn '
/^( |$)/{x;s/\n/ /g;p;$!b;$x}
$!H
$p'
вот только если текст начинается с "пробелXXX", то вставляется пустая строка в начале. можете поменять, если это критично...
Спасибо сказали:
-
- Сообщения: 17
- ОС: slackware,debian
Re: Решено: удалить в тексте переносы строк
да не работает оно. http://az.lib.ru/b/bulxwerlitton_e_d/text_0060.shtml
drBatty писал(а): ↑25.05.2009 02:10
Код: Выделить всё
sed -rn ' /^( |$)/{x;s/\n/ /g;p;$!b;$x} $!H $p'
вот только если текст начинается с "пробелXXX", то вставляется пустая строка в начале. можете поменять, если это критично...
ничего не понял. иду курить ман по sed'у.
-
- Сообщения: 1661
- Статус: Drinker with computing problems
- ОС: kubuntu 8.04
Re: Решено: удалить в тексте переносы строк
xa3ap писал(а): ↑25.05.2009 23:28да не работает оно. http://az.lib.ru/b/bulxwerlitton_e_d/text_0060.shtml
у меня вот такая комбинация сработала:
Код: Выделить всё
sed s/"^ "/"abc"/g text.txt > new1.txt
cat new1.txt | tr "\n" " " > new2.txt
cat new2.txt | tr "abc" "\n " > new3.txt
но вначале ещё перекодировать пришлось из cp1251 в utf8.
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
-
- Сообщения: 17
- ОС: slackware,debian
Re: Решено: удалить в тексте переносы строк
uptime писал(а): ↑26.05.2009 00:38xa3ap писал(а): ↑25.05.2009 23:28да не работает оно. http://az.lib.ru/b/bulxwerlitton_e_d/text_0060.shtml
у меня вот такая комбинация сработала:
Код: Выделить всё
sed s/"^ "/"abc"/g text.txt > new1.txt cat new1.txt | tr "\n" " " > new2.txt cat new2.txt | tr "abc" "\n " > new3.txt
но вначале ещё перекодировать пришлось из cp1251 в utf8.
спасибо, работает!
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Решено: удалить в тексте переносы строк
1. делаем абзацы из пяти пробелов в начале строки, эскейпим _, { и }, встречающиеся в тексте (ещё надо эскейпить #, $, %, &, но они в тексте не встречаются):
2. добавляем в начало:а в конец:
3. $ pdflatex b.latex
4. получаем b.pdf.
некрасиво, конечно, зато читабельно. доделка до нормальной книги — в качестве домашнего задания.
файлы прилагаю.
Код: Выделить всё
sed -i 's/ /\n/;s/_/\\_/g;s/{/\\{/g;s/}/\\}/g' b.latex
2. добавляем в начало:
Код: Выделить всё
\documentclass[russian,a4paper]{book}
\usepackage[utf8x]{inputenc}
\usepackage{babel}
\usepackage{ucs}
\usepackage{indentfirst}
\begin{document}
Код: Выделить всё
\end{document}
3. $ pdflatex b.latex
4. получаем b.pdf.
некрасиво, конечно, зато читабельно. доделка до нормальной книги — в качестве домашнего задания.
файлы прилагаю.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 17
- ОС: slackware,debian
Re: Решено: удалить в тексте переносы строк
перемудрили. все проще: man paste
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Решено: удалить в тексте переносы строк
sash-kan писал(а): ↑26.05.2009 22:131. делаем абзацы из пяти пробелов в начале строки, эскейпим _, { и }, встречающиеся в тексте (ещё надо эскейпить #, $, %, &, но они в тексте не встречаются):
Код: Выделить всё
sed -i 's/ /\n/;s/_/\\_/g;s/{/\\{/g;s/}/\\}/g' b.latex
кстати. хороший пример. если вы не против, я его позаимствую, о том как НЕ НАДО писать. мне без поллитры и не разобраться.. Думаю всем по барабану, но для многих { это скобка, а вот \{ это НЕ скобка - у вас - на оборот

хотя конечно это касается только оформления...
я знал. однако думаю, что вас это многому научило

-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Решено: удалить в тексте переносы строк
что-то я совсем не понял вашей мудрой мысли.drBatty писал(а): ↑29.05.2009 17:11sash-kan писал(а): ↑26.05.2009 22:131. делаем абзацы из пяти пробелов в начале строки, эскейпим _, { и }, встречающиеся в тексте (ещё надо эскейпить #, $, %, &, но они в тексте не встречаются):
Код: Выделить всё
sed -i 's/ /\n/;s/_/\\_/g;s/{/\\{/g;s/}/\\}/g' b.latex
кстати. хороший пример. если вы не против, я его позаимствую, о том как НЕ НАДО писать. мне без поллитры и не разобраться.. Думаю всем по барабану, но для многих { это скобка, а вот \{ это НЕ скобка - у вас - на оборот
хотя конечно это касается только оформления...
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Решено: удалить в тексте переносы строк
я сам не совсем понял. просто я-же привык к тому, что {/\\{/g;s/}/\\} это одна команда, вроде
Код: Выделить всё
int main()
{
{
printf("");
return 0;
}
}
на самом деле, это всего-лишь экранирование скобок...
в общем - одностроки - непонятное зло

запутался я...
Код: Выделить всё
#!/bin/sed
s/ /\n/
s/_/\\_/g
s/{/\\{/g
s/}/\\}/g
Вот в таком виде это ИМХО более понятно.
sed -f latex.sed -i b.latex
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Решено: удалить в тексте переносы строк
привычка использовать ключи к месту и не к месту (я про -r) зашорила ваше сознание.
p.s. кстати, обожаю однострочники. за неоценимый бонус — они хранятся в .bash_history.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Решено: удалить в тексте переносы строк
угу...
потому и предложил засунуть этот скрипт в файл, ведь он понадобится много раз, кроме того, если вам вдруг попадётся текст с #, который у вас не обработается, вы поменяете файл с sed-скриптом, а строчка в history будет работать правильно(уже по новому).
PS я бы вобще 3 строчки свёл-бы к одной
Код: Выделить всё
s/[{}_\#]/\\&/g
это где вы экранируете...