- Sed Удалить пробелы
- Что такое сед
- Использование Sed для удаления пробелов
- Регулярные выражения
- Просмотреть все пробелы в файле
- Удалить все пробелы (включая пробелы и табуляции)
- Удалить все ведущие пробелы (включая пробелы и табуляции)
- Удалить все конечные пробелы (включая пробелы и табуляции)
- Удалите начальные и конечные пробелы
- Замена нескольких пробелов одним пробелом
- sed примеры
Sed Удалить пробелы
Удаление пробелов в документах — важный шаг форматирования, необходимый для улучшения общего макета текста и обеспечения чистоты и аккуратности данных. Помогает хранить только необходимые данные и избавляться от ненужных начальных и конечных пробелов. Ниже приведены некоторые сценарии, в которых может потребоваться удалить пробелы:
- Для переформатирования исходного кода
- Для очистки данных
- Для упрощения вывода в командной строке
Если мы говорим о ведущих пробелах, их относительно легко заметить, поскольку они находятся в начале текста. Однако нелегко заметить завершающие пробелы. То же самое и с двойными пробелами, которые иногда трудно заметить. Все становится сложнее, когда вам нужно удалить все эти начальные и конечные пробелы из документа, содержащего тысячи строк.
Чтобы удалить пробелы из документа, вы можете использовать различные инструменты, такие как awk, sed, cut и tr. В некоторых других статьях мы обсуждали использование awk для удаления пробелов. В этой статье мы обсудим использование sed для удаления пробелов из данных.
Вы узнаете, как использовать sed, чтобы:
- Удалите все пробелы
- Удалить ведущие пробелы
- Удалить конечные пробелы
- Удалите как начальные, так и конечные пробелы
- Замените несколько пробелов одним пробелом
Мы будем запускать команды в Ubuntu 20.04 Фокальная ямка. Вы также можете запускать те же команды в других дистрибутивах Linux. Мы будем использовать приложение Ubuntu Terminal по умолчанию для запуска команд. Чтобы открыть Терминал, используйте сочетание клавиш Ctrl + Alt + T.
Что такое сед
Sed (сокращение от Stream Editor) — очень мощная и удобная утилита в Linux, которая позволяет нам выполнять базовые манипуляции с текстом во входных потоках. Это не текстовый редактор, но он помогает управлять текстом и фильтровать его. Он принимает входные потоки и редактирует их в соответствии с инструкциями пользователя, а затем выводит преобразованный текст на экран.
- Выбрать текст
- Текст поиска
- Вставить текст
- Заменить текст
- Удалить текст
Использование Sed для удаления пробелов
Мы будем использовать следующий синтаксис для удаления пробелов из текста:
- с /: является выражение подстановки
- РЕГЭКСП: регулярное выражение для соответствия
- замена: строка замены
- флаги: Мы будем использовать только флаг «g», чтобы включить замену глобально в каждой строке
Регулярные выражения
Вот некоторые из регулярных выражений, которые мы здесь будем использовать:
- ^ соответствует началу строки
- $ Спички конец строки
- + соответствует одному или нескольким вхождениям предыдущего символа
- * соответствует нулю или более вхождений предыдущего символа.
В демонстрационных целях мы будем использовать следующий образец файла с именем «testfile».
Просмотреть все пробелы в файле
Чтобы найти все пробелы в вашем файле, передайте вывод команды cat по конвейеру команде tr следующим образом:
$ cat testfile | tr «» «*» | tr «\ t» «&»
Эта команда заменяет все пробелы в вашем файле символом (*), что упрощает определение всех пробелов, независимо от того, являются ли они одиночными, множественными, ведущими или завершающими пробелами.
На следующем снимке экрана вы можете видеть, что пробелы заменены символом *.
Удалить все пробелы (включая пробелы и табуляции)
В некоторых случаях вам нужно удалить все пробелы из данных, я.е. начальные, конечные и пробелы между текстами. Следующая команда удалит все пробелы из «тестового файла».
$ cat testfile | sed -r ‘s / \ s + // g’
Примечание: Sed не изменяет ваши файлы, пока вы не сохраните вывод в файл.
После выполнения указанной выше команды появился следующий вывод, который показывает, что все пробелы были удалены из текста.
Вы также можете использовать следующую команду, чтобы убедиться, что все пробелы были удалены.
$ cat testfile | sed -r ‘s / \ s + // g’ | tr «» «*» | tr «\ t» «&»
Из вывода вы можете видеть, что это не символ (*), что означает, что все пробелы были удалены.
Чтобы удалить все пробелы, но только из определенной строки (скажем, строки номер 2), вы можете использовать следующую команду:
$ cat testfile | sed -r ‘2s / \ s + // g’
Удалить все ведущие пробелы (включая пробелы и табуляции)
Чтобы удалить все пробелы в начале каждой строки (ведущие пробелы), используйте следующую команду:
Следующий вывод появился после выполнения указанной выше команды, который показывает, что все ведущие пробелы были удалены из текста.
Вы также можете использовать следующую команду, чтобы убедиться, что все начальные пробелы удалены:
$ cat testfile | sed ‘s / ^ [\ t] * //’ | tr «» «*» | tr «\ t» «&»
Из вывода вы можете видеть, что в начале строк нет символа (*), который подтверждает, что все ведущие пробелы удалены.
Чтобы удалить начальные пробелы только из определенной строки (скажем, строки номер 2), вы можете использовать следующую команду:
$ cat testfile | sed ‘2s / ^ [\ t] * //’
Удалить все конечные пробелы (включая пробелы и табуляции)
Чтобы удалить все пробелы в конце каждой строки (завершающие пробелы), используйте следующую команду:
Следующий вывод появился после выполнения указанной выше команды, который показывает, что все конечные пробелы были удалены из текста.
Вы также можете использовать следующую команду, чтобы убедиться, что все конечные пробелы были удалены.
$ cat testfile | sed ‘s / [\ t] * $ //’ | tr «» «*» | tr «\ t» «&»
Из вывода вы можете видеть, что в конце строк нет символа (*), который подтверждает, что все конечные пробелы удалены.
Чтобы удалить конечные пробелы только из определенной строки (скажем, строки номер 2), вы можете использовать следующую команду:
Удалите начальные и конечные пробелы
Чтобы удалить все пробелы как в начале, так и в конце каждой строки (i.е. как начальные, так и конечные пробелы), используйте следующую команду:
$ cat testfile | sed ‘s / ^ [\ t] * //; s / [\ t] * $ //’
Следующий вывод появился после выполнения указанной выше команды, который показывает, что как начальные, так и конечные пробелы были удалены из текста.
Вы также можете использовать следующую команду, чтобы убедиться, что удалены как начальные, так и конечные пробелы.
$ cat testfile | sed ‘s / ^ [\ t] * //; s / [\ t] * $ //’ | tr «» «*» | tr «\ t» «&»
Из вывода вы можете видеть, что в начале или в конце строк нет символа (*), который подтверждает, что все начальные и конечные пробелы удалены.
Чтобы удалить как начальные, так и конечные пробелы только из определенной строки (скажем, строки номер 2), вы можете использовать следующую команду:
$ cat testfile | sed ‘2s / ^ [\ t] * //; 2s / [\ t] * $ //’
Замена нескольких пробелов одним пробелом
В некоторых случаях в одном и том же месте файла есть несколько пробелов, но вам нужен только один пробел. Вы можете сделать это, заменив эти несколько пробелов одним пробелом с помощью sed.
Следующая команда заменит все несколько пробелов одним пробелом из каждой строки в «тестовом файле».
$ cat testfile | sed ‘s / [] \ + / / g’
Следующий вывод появился после выполнения указанной выше команды, который показывает, что несколько пробелов были заменены одним пробелом.
Вы также можете использовать следующую команду, чтобы проверить, заменены ли несколько пробелов одним пробелом:
$ cat testfile | sed ‘s / [] \ + / / g’ | tr «» «*» | tr «\ t» «&»
На выходе вы можете увидеть один символ (*) в каждом месте, который подтверждает, что все вхождения нескольких пробелов заменены одним пробелом.
Итак, это было все об удалении пробелов из ваших данных с помощью sed. В этой статье вы узнали, как использовать sed для удаления всех пробелов из ваших данных, удаления только начальных или конечных пробелов, а также удаления начальных и конечных пробелов. Вы также узнали, как заменить несколько пробелов одним пробелом. Теперь вам будет легко удалить пробелы из файла, содержащего сотни или тысячи строк.
Игры
FPS означает Кадров в секунду. Задача FPS — измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных .
Игры
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка — это процесс установки на гарнитуру содер.
Игры
Платформа Windows была одной из доминирующих платформ для игр из-за огромного процента игр, которые разрабатываются сегодня с встроенной поддержкой Wi.
Свежие статьи об операционных системах. Множество интересных гайдов и полезных советов. Почувствуйте себя своим в мире современных технологий
sed примеры
sed (от англ. Stream EDitor) — потоковый текстовый редактор (а также язык программирования), применяющий различные предопределённые текстовые преобразования к последовательному потоку текстовых данных
Первоначально был написан как UNIX-утилита Ли Макмэхоном (англ. Lee E. McMahon) из Bell Labs в 1973—74 годах. Сейчас sed доступен фактически для любой операционной системы, поддерживающей работу с командной строкой
^ Соответствует началу строки $ Соответствует концу строки . Соответствует любому единственному символу * Соответствует нулю или более повторений предшествующего символа [ ] Соответствуют одному любому из символов включённых в квадратные скобки s/ Соответствует Заменить
Самые простейшие и полуряные команды:
sed -e 's/то-что-заменить/то-чем-заменить/g' входящий-файл > новый-файл
Удалить пустые строки и строки стостоящие из одних пробелов:
# удаляем пробелы и табуляции с начала каждой строки # весь текст выравнивается по левому краю sed 's/^[ \t]*//' # удаляем пробелы и табуляции в конце каждой строки sed 's/[ \t]*$//' # удалить пробелы и табуляции как в начале так и в конце строки sed 's/^[ \t]*//;s/[ \t]*$//' # вставить 5 пробелов в начале каждой строки (смещение страницы) sed 's/^/ /' # выравнивание всего текста по правому краю на ширину колонки 79 sed -e :a -e 's/^.\$/ &/;ta' # задаем 78 плюс 1 пробел # выровнять весь текст по центру, два метода sed -e :a -e 's/^.\$/ & /;ta' # method 1 sed -e :a -e 's/^.\$/ &/;ta' -e 's/\( *\)\1/\1/' # method 2 # замена в каждой строке "foo" на "bar" sed 's/foo/bar/' # заменяет только первое # найденное значение в строке sed 's/foo/bar/4' # заменяет только 4 первых значений в строке sed 's/foo/bar/g' # заменяет все значения в строке sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # заменяет следующий # за встреченным sed 's/\(.*\)foo/\1bar/' # заменяет только последнее "foo" # заменить "foo" на "bar" ТОЛЬКО для строк, в которых есть "baz" sed '/baz/s/foo/bar/g' # заменить "foo" на "bar" КРОМЕ тех строк, в которых есть "baz" sed '/baz/!s/foo/bar/g' # заменить "scarlet" или "ruby" или "puce" на "red" sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g' # все seds gsed 's/scarlet\|ruby\|puce/red/g' # GNU sed # расстановка строк в обратном порядке (эмуляция "tac") # bug/feature в HHsed v1.5 удаляет еще и все пустые строки sed '1!G;h;$!d' # метод 1 sed -n '1!G;h;$p' # метод 2 # reverse each character on the line (emulates "rev") sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' # соединяет пары строк друг с другом (как "paste") sed '$!N;s/\n/ /' # если строка заканчивается на backslash (\), присоединить следующую # строку к ней sed -e :a -e '/\\$/N; s/\\\n//; ta' # если строка начинается со знака равенства, добавить ее # к предыдущей строке и заменить "=" на один пробел sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D' # разделять числа запятыми, заменяет "1234567" на "1,234,567" gsed ':a;s/\B8\\>/,&/;ta' # GNU sed sed -e :a -e 's/\(.*7\)\(1\\)/\1,\2/;ta' # все seds # добавить запятые для чисел с десятичной точкой и знаком минуса gsed -r ':a;s/(^|[^0-9.])(1+)(2)/\1\2,\3/g;ta' # добавить строку кадые 5 строк (после строк 5, 10, 15, 20, и тд.) gsed '0~5G' # GNU sed sed 'n;n;n;n;G;' # все seds
Новые версии sed поддерживают редактирование входящего файла, к регулярке надо просто добавить команду -i:
sed -i 's/foo/bar/g' /path/to/my/file