У меня есть файл .txt с номерами, упорядоченными следующим образом (в той же строке):
106849_01373 106849_01967 106850_00082 23025.7_01059
Я хотел бы преобразовать их так:
106849_01373
106849_01967
106850_00082
23025.7_01059
Я понятия не имею, какую команду использовать. Может ли кто-нибудь помочь мне с этим?
command-line
text-processing
Аннемике Смет
источник
источник
Довольно легко с
tr
:Пример:
источник
Ответ Heemayl - путь, однако есть альтернатива, использующая Perl:
-l
: включает автоматическую обработку конца строки. У него есть два отдельных эффекта. Во-первых, он автоматически запускает $ / (разделитель входных записей) при использовании с -n или -p. Во-вторых, он присваивает $ \ (разделителю выходной записи) значение octnum, чтобы в любом операторе печати этот разделитель был добавлен обратно. Если октнум опущен, устанавливает $ \ текущее значение $ /.-a
: включает режим автоматического разделения при использовании с -n или -p. Неявная команда split для массива @F выполняется в качестве первой вещи внутри неявного цикла while, создаваемого -n или -p.-n
: заставляет Perl принять следующий цикл вокруг вашей программы, который заставляет его перебирать аргументы имени файла, вроде sed -n или awk:-e
: может использоваться для ввода одной строки программы;$,="\n"
: устанавливает разделитель выходного поля на новую строку;print(@F)
: печатает поля, разделенные разделителем выходных полей.источник
AWK
подход. В основном изменение выходного разделителя для полей и циклов. Тестовый файл - ваш пример, вставленный снова и снова с ENDLINE в концеисточник
Использование
sed
:источник
Я просто добавляю решение Python для удовольствия:
Эта команда запускает однострочный скрипт Python 3 в «одинарных кавычках» с именем файла, который вы хотите преобразовать в качестве аргумента в конце. Синтаксис такой:
Сценарий, состоящий из 1 строки, который мы используем, для ясности расширен до нескольких строк:
Он импортирует
sys
модуль для чтения аргументов командной строки, принимает первый заданный аргумент в качестве имени файла для открытия и печатает каждый разделенный пробелами фрагмент данных из файла в одну строку.источник