- Удалить переносы строк linux
- Команда tr и ее синтаксис
- 1) Заменить все строчные буквы на заглавные
- 2) Удаление символов с помощью tr
- 3) Удаление ила змена символов НЕ в наборе
- 4) Замена пробелов на табуляцию
- 5) Удаление повторений символов
- 6) Заменить символы из набора на перенос строки
- 7) Генерируем список уникальных слов из файла
- 8) Кодируем символы с помошью ROT
- Вывод
- unixforum.org
- Решено: удалить в тексте переносы строк
- Решено: удалить в тексте переносы строк
- Re: Решено: удалить в тексте переносы строк
- Re: Решено: удалить в тексте переносы строк
- Re: Решено: удалить в тексте переносы строк
- unixforum.org
- sed, помогите удалить лишние переносы (окружение: UnixUtils)
- sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
- Re: sed, помогите удалить лишние переносы
Удалить переносы строк linux
Команда tr (translate) используется в Linux в основном для преобразования и удаления символов. Она часто находит применение в скриптах обработки текста. Ее можно использовать для преобразования верхнего регистра в нижний, сжатия повторяющихся символов и удаления символов.
Команда tr требует два набора символов для преобразований, а также может использоваться с другими командами, использующими каналы (пайпы) Unix для расширенных преобразований.
В этой статье мы узнаем, как использовать команду tr в операционных системах Linux и рассмотрим некоторые примеры.
Команда tr и ее синтаксис
Ниже приведен синтаксис команды tr. Требуется, как минимум, два набора символов и опции.
SET1 и SET2 это группы символов. are a group of characters. Необходимо перечислить необходимые символы или указать последовательность.
\NNN -> восмеричные (OCT) символы NNN (1 до 3 цифр)
\\ -> обратный слеш (экранированный)
\n -> новая строка (new line)
\r -> перенос строки (return)
\t -> табуляция (horizontal tab)
[:alnum:] -> все буквы и цифры
[:alpha:] -> все буквы
[:blank:] -> все пробелы
[:cntrl:] -> все управляющие символы (control)
[:digit:] -> все цифры
[:lower:] -> все буквы в нижнем регистре (строчные)
[:upper:] -> все буквы в верхнем регистре (заглавные)
Примеры использования команды tr:
Вот некоторые опции:
-c , -C , —complement -> удалить все символы, кроме тех, что в первом наборе
-d , —delete -> удалить символы из первого набора
-s , —squeeze-repeats -> заменять набор символов, которые повторяются, из указанных в последнем наборе знаков
1) Заменить все строчные буквы на заглавные
Мы можем использовать tr для преобразования нижнего регистра в верхний или наоборот.
Просто используем наборы [:lower:] [:upper:] или «a-z» «A-Z» для замены всех символов.
Вот пример, как преобразовать в Linux с помощью команды tr все строчные буквы в заглавные:
А сейчас сделаем замену из файла input.txt
Как мы видим, в файле ничего не изменилось, осталось все строчными буквами. Чтобы изменения были в файле, на необходимо перевести вывод в новый файл. Например, в output.txt
Кстати, в команде sed есть опция y которая делает то же самое (sed ‘y/SET1/SET2’)
2) Удаление символов с помощью tr
Опция -d используется для удаления всех символов, которые указаны в наборе символов.
Следующая команда удалит все символы из этого набора ‘aei’.
Следующая команда удалит все цифры в тексте. Будем использовать набор [:digit:] , чтобы определить все цифры.
А вот пример команд, которыми можно удалить переносы на новые строки
3) Удаление ила змена символов НЕ в наборе
С помощью параметра -c Вы можете сказать tr заменить все символы, которые Вы не указали в наборе. Приведем пример.
А вот пример удаления, просто укажем опцию -d и только один набор (символы которого удалять НЕ надо, а остальные удалить)
4) Замена пробелов на табуляцию
Для указания пробелов используем — [:space:] , а для табуляции — \t.
5) Удаление повторений символов
Это делает параметр -s . Рассмотрим пример удаления повторов знаков.
Или заменим повторения на символ решетки
6) Заменить символы из набора на перенос строки
Сделаем так, чтобы все буквы были заменены на перенос новой строки:
7) Генерируем список уникальных слов из файла
Это иногда очень полезная команда, когда необходимо определить количество повторений и вывести уникальные слова из файла:
8) Кодируем символы с помошью ROT
ROT (Caesar Cipher) — это тип криптографии, в котором кодирование выполняется путем перемещения букв в алфавите к его следующей букве.
Давайте проверим, как использовать tr для шифрования.
В следующем примере каждый символ в первом наборе будет заменен соответствующим символом во втором наборе.
Первый набор [a-z] (это значит abcdefghijklmnopqrstuvwxyz). Второй набор [n-za-m] (который содержит pqrstuvwxyzabcdefghijklmn).
Простая команда для демонстрации вышеуказанной теории:
Полезно при шифровании электронных адресов:
Вывод
tr — это очень мощная команда линукс при использовании пайпов Unix и очень часто используется в скриптах. Дополнительную информацию об этой утилите всегда можно найти в man.
Если у Вас есть какие-либо дополнения, не стесняйтесь пишите в комментариях.
Источник
unixforum.org
Форум для пользователей UNIX-подобных систем
- Темы без ответов
- Активные темы
- Поиск
- Статус форума
Решено: удалить в тексте переносы строк
Модератор: Bizdelnick
Решено: удалить в тексте переносы строк
Сообщение xa3ap » 24.05.2009 15:31
имеется plain text, каким то мудаком разбитый переносами по 80 символов. как удалить эти переносы. но оставить пробелы перед абзацами?
Re: Решено: удалить в тексте переносы строк
Сообщение Nikky » 24.05.2009 15:35
Re: Решено: удалить в тексте переносы строк
Сообщение allez » 24.05.2009 15:57
cat plain.txt | tr «\n» » » > new.txt
tr «\n» » » new.txt
P. S. И не следует называть чудаками на букву «м» незнакомых (и, скорее всего, ничем вам не обязанных) людей только потому, что вам не понравилось форматирование текстового файла. 😉
Re: Решено: удалить в тексте переносы строк
Сообщение xa3ap » 24.05.2009 16:57
cat plain.txt | tr «\n» » » > new.txt
tr «\n» » » new.txt
P. S. И не следует называть чудаками на букву «м» незнакомых (и, скорее всего, ничем вам не обязанных) людей только потому, что вам не понравилось форматирование текстового файла.
мне надо ещё учитывать новые абзаци (они выглядят как «\n » — новая строка и пробелы в начале строки). по идее должно работать:
cat plain.txt | tr «\n » «***» > new.txt
cat new.txt | tr «\n» » » > tmp.txt
cat tmp.txt | tr «***» «\n» > new.txt
но вместо нормального результата выходит ч.з.ч. кажется, дело в том, что текст ‘выровнен’ — сплошь и рядом встречаются два и больше пробелов вместе.
обьясните, пожалуйста, в чем тут дело? таки напишите скрипт Работающий.
Источник
unixforum.org
Форум для пользователей UNIX-подобных систем
- Темы без ответов
- Активные темы
- Поиск
- Статус форума
sed, помогите удалить лишние переносы (окружение: UnixUtils)
Модератор: /dev/random
sed, помогите удалить лишние переносы
Сообщение uptime » 24.06.2010 18:48
Re: sed, помогите удалить лишние переносы
Re: sed, помогите удалить лишние переносы
Сообщение t.t » 24.06.2010 19:13
Re: sed, помогите удалить лишние переносы
Сообщение Encore » 24.06.2010 19:16
upd. что й то я не в дугу совсем про переносы не прочитал..
Re: sed, помогите удалить лишние переносы
1. Зачем обратно менять все пробелы на \n? 🙂 Видимо, там должно быть 2 пробела.
2. Так это ж sed весь файл в память засосет.
Re: sed, помогите удалить лишние переносы
Сообщение t.t » 24.06.2010 19:54
1. Зачем обратно менять все пробелы на \n? Видимо, там должно быть 2 пробела.
2. Так это ж sed весь файл в память засосет.
Re: sed, помогите удалить лишние переносы
Re: sed, помогите удалить лишние переносы
Сообщение t.t » 24.06.2010 20:03
Re: sed, помогите удалить лишние переносы
Сообщение Nazyvaemykh » 24.06.2010 20:27
Re: sed, помогите удалить лишние переносы
Сообщение t.t » 24.06.2010 20:42
Re: sed, помогите удалить лишние переносы
Сообщение Nazyvaemykh » 24.06.2010 20:58
У меня в браузере отображается с пробелами (с точностью до пробелов решение правильное).
Я лишь хотел показать, что относительно простое решение можно получить использованием sed-команды ‘N’.
Re: sed, помогите удалить лишние переносы
Сообщение uptime » 25.06.2010 12:36
Re: sed, помогите удалить лишние переносы
Сообщение uptime » 25.06.2010 12:42
так не работала. Мой вариант:
Re: sed, помогите удалить лишние переносы
Сообщение /dev/random » 25.06.2010 12:46
Re: sed, помогите удалить лишние переносы
Сообщение uptime » 25.06.2010 12:49
Re: sed, помогите удалить лишние переносы
Сообщение t.t » 25.06.2010 13:20
Re: sed, помогите удалить лишние переносы
Загрузите кусок файла в виде приложения (attachment), а то такое чувство, что там куча каких-то странных невидимых символов.
Если в файле есть trailing whitespaces, то приведенный мной скрипт работает коряво:
Если его слегка подрихтовать на этот счет, то:
Re: sed, помогите удалить лишние переносы
Сообщение uptime » 25.06.2010 15:19
уже лучше. Но там какая то аццкая смесь пробелов и табов. Во избежание порчи прикрепляю исходный файл. (Переименовал в .txt)
мой последний вариант:
Re: sed, помогите удалить лишние переносы
Сообщение /dev/random » 25.06.2010 15:23
Оу. Так это в винде, что ли? Там CRLF!
Upd: блин, торможу. Сказано же, UnxUtils. Значит, да, в винде.
Re: sed, помогите удалить лишние переносы
Сообщение Subj » 25.06.2010 15:23
Я бы примерно так сделал:
cat file | sed -n «/2/p» | while read i1; read i2; do echo $i1 $i2 ; done
cat file | sed -n ‘s/[\t ]\+//;/8/p’ | sed ‘$!N;s/\n/ /’
Насчет венды — хз )
Re: sed, помогите удалить лишние переносы
Сообщение uptime » 25.06.2010 15:56
Re: sed, помогите удалить лишние переносы
Сообщение uptime » 25.06.2010 16:02
Я бы примерно так сделал:
cat file | sed -n «/6/p» | while read i1; read i2; do echo $i1 $i2 ; done
Re: sed, помогите удалить лишние переносы
Сообщение /dev/random » 25.06.2010 16:06
Re: sed, помогите удалить лишние переносы
Сообщение uptime » 25.06.2010 16:25
ура! товарищи! яйца sh подействовал ))
всех откликнувшихся готов угостить
Re: sed, помогите удалить лишние переносы
Сообщение Subj » 25.06.2010 16:33
Re: sed, помогите удалить лишние переносы
Сообщение Nazyvaemykh » 25.06.2010 17:41
Ну, вот поправленный немного вариант чисто с sed (пробовал только в GNU\Linux окружении, с приведенным примером работает правильно):
Re: sed, помогите удалить лишние переносы
Сообщение uptime » 28.06.2010 11:39
Ну, вот поправленный немного вариант чисто с sed (пробовал только в GNU\Linux окружении, с приведенным примером работает правильно):
Заменил одинарные кавычки на двойные. Результат:
Источник