sed

Sed Удалить пробелы

Sed Удалить пробелы
Удаление пробелов в документах - важный шаг форматирования, необходимый для улучшения общего макета текста и обеспечения чистоты и аккуратности данных. Помогает хранить только необходимые данные и избавляться от ненужных начальных и конечных пробелов. Ниже приведены некоторые сценарии, в которых может потребоваться удалить пробелы:

Если мы говорим о ведущих пробелах, их относительно легко заметить, поскольку они находятся в начале текста. Однако нелегко заметить завершающие пробелы. То же самое и с двойными пробелами, которые иногда трудно заметить. Все становится сложнее, когда вам нужно удалить все эти начальные и конечные пробелы из документа, содержащего тысячи строк.

Чтобы удалить пробелы из документа, вы можете использовать различные инструменты, такие как awk, sed, cut и tr. В некоторых других статьях мы обсуждали использование awk для удаления пробелов. В этой статье мы обсудим использование sed для удаления пробелов из данных.

Вы узнаете, как использовать sed, чтобы:

Мы будем запускать команды в Ubuntu 20.04 Фокальная ямка. Вы также можете запускать те же команды в других дистрибутивах Linux. Мы будем использовать приложение Ubuntu Terminal по умолчанию для запуска команд. Чтобы открыть Терминал, используйте сочетание клавиш Ctrl + Alt + T.

Что такое сед

Sed (сокращение от Stream Editor) - очень мощная и удобная утилита в Linux, которая позволяет нам выполнять базовые манипуляции с текстом во входных потоках. Это не текстовый редактор, но он помогает управлять текстом и фильтровать его. Он принимает входные потоки и редактирует их в соответствии с инструкциями пользователя, а затем выводит преобразованный текст на экран.

С помощью sed вы можете:

Использование Sed для удаления пробелов

Мы будем использовать следующий синтаксис для удаления пробелов из текста:

s / REGEXP / замена / флаги

Где

Регулярные выражения

Вот некоторые из регулярных выражений, которые мы здесь будем использовать:

В демонстрационных целях мы будем использовать следующий образец файла с именем «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] * //'

Выход:

Следующий вывод появился после выполнения указанной выше команды, который показывает, что все ведущие пробелы были удалены из текста.

Вы также можете использовать следующую команду, чтобы убедиться, что все начальные пробелы удалены:

$ cat testfile | sed 's / ^ [\ t] * //' | tr "" "*" | tr "\ t" "&"

Из вывода вы можете видеть, что в начале строк нет символа (*), который подтверждает, что все ведущие пробелы удалены.

Чтобы удалить начальные пробелы только из определенной строки (скажем, строки номер 2), вы можете использовать следующую команду:

$ cat testfile | sed '2s / ^ [\ t] * //'

Удалить все конечные пробелы (включая пробелы и табуляции)

Чтобы удалить все пробелы в конце каждой строки (завершающие пробелы), используйте следующую команду:

$ cat testfile | sed 's / [\ t] * $ //'

Выход:

Следующий вывод появился после выполнения указанной выше команды, который показывает, что все конечные пробелы были удалены из текста.

Вы также можете использовать следующую команду, чтобы убедиться, что все конечные пробелы были удалены.

$ cat testfile | sed 's / [\ t] * $ //' | tr "" "*" | tr "\ t" "&"

Из вывода вы можете видеть, что в конце строк нет символа (*), который подтверждает, что все конечные пробелы удалены.

Чтобы удалить конечные пробелы только из определенной строки (скажем, строки номер 2), вы можете использовать следующую команду:

$ cat testfile | sed '2s / [\ t] * $ //'

Удалите начальные и конечные пробелы

Чтобы удалить все пробелы как в начале, так и в конце каждой строки (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 для удаления всех пробелов из ваших данных, удаления только начальных или конечных пробелов, а также удаления начальных и конечных пробелов. Вы также узнали, как заменить несколько пробелов одним пробелом. Теперь вам будет легко удалить пробелы из файла, содержащего сотни или тысячи строк.

SuperTuxKart для Linux
SuperTuxKart - отличная игра, созданная для того, чтобы бесплатно познакомить вас с Mario Kart в вашей системе Linux. Играть в нее довольно сложно и в...
Учебник Battle for Wesnoth
Битва за Веснот - одна из самых популярных стратегических игр с открытым исходным кодом, в которую вы можете играть сейчас. Эта игра не только очень д...
0 А.D. Руководство
Из множества существующих стратегических игр 0 A.D. удается выделиться как всеобъемлющее название и очень глубокая тактическая игра, несмотря на то, ч...