Перенаправление вывода с терминала на указанный лист c в файле .csv - PullRequest
0 голосов
/ 26 апреля 2020

Я хотел бы перенаправить некоторые выходные данные из терминала на листы в электронной таблице. Возможно ли это в пределах bash?

Чтобы указать c, я сгенерировал некоторый вывод, который отображается в терминале. Вместо этого мне удалось перенаправить этот вывод на лист в файле .csv следующим образом:

COMMAND awk '{print $1,$2}' > FILE.csv

$1,$2 перенаправляет столбцы 1 и 2 вывода терминала на лист в FILE.csv.

а) Можно ли указать, на какой лист перенаправляется вывод? То есть, как изменить указанную выше команду так, чтобы вывод вместо этого перенаправлялся, скажем, на лист 25 файла FILE.csv?

b) $ обозначает столбцы выходных данных терминала, которые должны быть выведены на Файл .csv. Каков синтаксис для вывода, скажем, столбца 1, строки 2 только в файл .csv?

РЕДАКТИРОВАТЬ

Вывод терминала имеет вид

X1, Y1 X2, Y2 ...

, состоящий из около 1000 строк, и я хотел бы скопировать Xi значения, скажем, для столбца B в CSV-файле и значения Yi для столбца C.

У меня есть много таких выходных данных, сгенерированных по отдельности, поэтому в целом я бы хотел, чтобы они были рядом друг с другом в одном файле .csv. То есть указанный выше вывод может go в столбцах B и C, а затем другой такой вывод может go в столбцах D и E et c ...

1 Ответ

1 голос
/ 26 апреля 2020

В Linux вы можете добиться этого, используя paste :

paste -d "," <(COMMAND1 | awk '{print $1","$2}') \
  <(COMMAND2 | awk '{print $1","$2}') \
  (more COMMANDs...) \
> FILE.csv

Конечно, это работает, только если все КОМАНДЫ выводят одинаковое количество строк.

Если это не так, вы можете использовать join , чтобы объединить файлы по соответствующему столбцу идентификатора.

...