У меня есть несколько текстовых файлов, которые содержат несколько столбцов, разделенных различным количеством пробелов, но вместо этого мне нужна одна вкладка в качестве разделителя. Можно ли это сделать в Bash?
linux
bash
text-manipulation
неизвестный пользователь
источник
источник
Ответы:
Чтобы преобразовать последовательности из более чем одного пробела в табуляцию, но оставить отдельные пробелы в покое :
Чтобы сделать это для нескольких файлов:
или
или
источник
sed: -e expression #1, char 1: unknown command: `.'
find
что внизу.sed
не любит иметь пробел перед расширением резервной копии. Я отредактировал свой ответ. Спасибо за отчет.Если у вашего персонажа несколько вкладок, вы также можете использовать
tr -s
:Например:
Все пробелы станут одним.
источник
Вы можете использовать
sed
для замены нескольких пробелов на вкладку .:Пример замены одного или нескольких пробелов одной вкладкой:
источник
Самый простой ответ, используя только
bash
:Если есть переменное число столбцов, вы можете сделать это, но он будет работать только в
bash
, а неsh
:например
производит:
(между ними есть вкладка, но ее трудно увидеть, когда я ее вставляю)
Вы также можете сделать это с помощью
sed
илиtr
, но обратите внимание, что обработка пробелов в начале дает разные результаты.СЭД:
Tr:
источник
perl -p -i -e 's/\s+/\t/g' *.txt
источник
Попробуйте следующий сценарий SED:
Где <TAB> нажимает клавишу TAB.
источник
Это очень простое решение:
sed в основном работает таким образом (sed 's / old_pattern / new_pattern / g'). В этом случае старый шаблон - «\ s +», что означает поиск пробела «s» один или несколько раз «+» и обратный слеш «\» для интерпретации этого как регулярного выражения.
Новый шаблон - это вкладка «\ t», которая написана в формате регулярных выражений, а «g» применяется для замены всех строк «глобально».
источник