Распечатайте первый столбец

Я хочу распечатать столбец 1 этого файла. Я использовал эту команду: awk '{print $1}' но это просто распечатало первое слово 1-го столбца.

ДАННЫЕ

ABC transporters                             ABC transporters
Alanine, aspartate and glutamate metabolism  Alanine, aspartate 
alpha-Linolenic acid metabolism              alpha-Linolenic acid metabolism
Aminoacyl-tRNA biosynthesis                  Aminoacyl-tRNA biosynthesis
Amino sugar and nucleotide sugar metabolism  Amino sugar and nucleotide
Arachidonic acid metabolism                  Arachidonic 

Вывод:

ABC
Alanine,
alpha-Linolenic
Aminoacyl-tRNA
Amino
Arachidonic

Желаемый вывод:

ABC transporters
Alanine, aspartate and glutamate metabolism
alpha-Linolenic acid metabolism 
Aminoacyl-tRNA biosynthesis 
Amino sugar and nucleotide sugar metabolism 
Arachidonic acid metabolism 
6
задан 16 May 2017 в 00:32

4 ответа

То, что я вижу, - то, что Ваши столбцы разграничены два, располагают с интервалами.

так с awk:

awk -F '\\s\\s' '{print $1}'
14
ответ дан 23 November 2019 в 07:14

Так как это, кажется, столбец фиксированной ширины, Вы можете всего cut соответствующие символы. Самый широкий столбец Alanine, aspartate and glutamate metabolism, кажется, 44 широкие символа, таким образом:

$ cut -c1-44 foo
ABC transporters
Alanine, aspartate and glutamate metabolism
alpha-Linolenic acid metabolism
Aminoacyl-tRNA biosynthesis
Amino sugar and nucleotide sugar metabolism
Arachidonic acid metabolism
14
ответ дан 23 November 2019 в 07:14

Поскольку второй столбец, очевидно, повторяет начало первого столбца, я беру это в качестве критерия сокращения с sed, таким образом это не зависит от ширины столбца:

sed 's/^\(.*\)\(.*\) \1$/\1\2/'

Первый шаблон является повторной частью, backreferenced как \1 в конце строки. Вы могли добавить ;s/ *$// для удаления конечных пробелов, если они беспокоят Вас.

2
ответ дан 23 November 2019 в 07:14

Здание на ответе muru, который столбец указан с фиксированной шириной, с помощью egrep команда с опцией -o, позволит Вам печатать просто подобранные (непустые) части согласующего отрезка длинной линии, указанного шаблоном поиска. По умолчанию, однако, вся строка будет распечатана.

$ egrep -o "^.{44}" foo
1
ответ дан 23 November 2019 в 07:14

Другие вопросы по тегам:

Похожие вопросы: