Команда для замены одного пробела на вкладки в текстовом файле - PullRequest
1 голос
/ 08 февраля 2020

Итак, у меня есть текстовый файл, и проблема в том, что пробелы и табуляции используются для разделения значений столбцов, что вызывает много проблем из-за несоответствия. Например:

ID Name    Class Time
1 Johnson  5-D 6pm
         .
         .
         .

Как видно из примера, ID и Имя разделяются одним пробелом , а Имя и Класс разделяются вкладкой.

Как написать команду sed в заменить все одиночные пробелы в текстовом файле на вкладку? Я бы хотел, чтобы новый текстовый файл был сгенерирован примерно так:

ID      Name      Class     Time
1       Johnson   5-D        6pm

На данном этапе выравнивание не имеет значения, я просто хочу заменить один пробел на табуляцию.

Редактировать: скрипт awk тоже приветствуется

Ответы [ 4 ]

1 голос
/ 08 февраля 2020

С tr:

 tr ' ' '\t' <inputfile >outputfile

Заменяет каждый пробел символом табуляции.

Если вам это нужно, вы также можете заменить последовательность из нескольких пробелов на одну вкладку, используя

 tr -s ' ' '\t' <inputfile >outputfile
0 голосов
/ 08 февраля 2020

Использование perl для получения расширенных регулярных выражений (в частности, утверждения lookbehind и lookahead для сопоставления одного пробела без других пробелов с обеих сторон):

perl -pi -e 's/(?<=\S) (?=\S)/\t/g' input.txt
0 голосов
/ 08 февраля 2020

Это может сделать работу sed -i -e 's/\s/\t/g' filename.txt.

0 голосов
/ 08 февраля 2020

Использование column Функция:

column -t file

С man column:

-t   Determine the number of columns the input contains and create a table. Columns are
     delimited with whitespace, by default, or with the characters supplied using the -s
     option. Useful for pretty-printing displays.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...