Какой самый простой способ объединить 12 столбцов? - PullRequest
0 голосов
/ 09 февраля 2009

У меня 12 столбцов, разделенных табуляцией. Как я могу присоединиться к ним бок о бок?

[Добавлено] Вы также можете указать мне другие методы как AWK: чем быстрее, тем лучше.

Ответы [ 5 ]

5 голосов
/ 09 февраля 2009

Поскольку вы специально спрашивали о awk (есть инструменты, более подходящие для работы), первое решение является следующим:

awk '{print $1$2$3$4$5$6$7$8$9$10$11$12}'

Более сложное и настраиваемое решение, в котором вы можете изменить количество столбцов, используемых для вывода, будет:

awk -v lim=12 '{for(x=1;x<lim;x++){printf "%s",$x};print ""}'

Другие возможности, если вы не ограничены awk:

tr -d '\011'                     # to combine ALL columns on the line.
cut --output-delimiter='' -f1-12 # more general (1-12 or 3-7 or 1-6,9).

Исходя из ваших правок и комментариев, я предлагаю вырезать - лучший инструмент для работы. Для получения более подробной информации используйте «man cut», «info cut» или «cut --help» (это зависит от вашей платформы).

4 голосов
/ 09 февраля 2009

Если вы используете awk для объединения столбцов, я бы использовал 'tr' и удалил вкладку

cat file1 | tr -d '\011'>  file2
0 голосов
/ 09 февраля 2009

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

0 голосов
/ 09 февраля 2009

Ну, это зависит от вашего редактора / команды выбора. Но, как правило, все сводится к замене персонажа ничем. Например, в vim: ":%s/\t//g"

0 голосов
/ 09 февраля 2009

Попробуйте это:

{
    print $1$2$3$4$5$6$7$8$9$(10)$(11)$(12)
}

Я не гений awk, поэтому я не знаю, есть ли какая-то циклическая конструкция, которую вы можете использовать.

...