Я хочу распечатать столбец 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
То, что я вижу, - то, что Ваши столбцы разграничены два, располагают с интервалами.
так с awk
:
awk -F '\\s\\s' '{print $1}'
Так как это, кажется, столбец фиксированной ширины, Вы можете всего 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
Поскольку второй столбец, очевидно, повторяет начало первого столбца, я беру это в качестве критерия сокращения с sed
, таким образом это не зависит от ширины столбца:
sed 's/^\(.*\)\(.*\) \1$/\1\2/'
Первый шаблон является повторной частью, backreferenced как \1
в конце строки. Вы могли добавить ;s/ *$//
для удаления конечных пробелов, если они беспокоят Вас.
Здание на ответе muru, который столбец указан с фиксированной шириной, с помощью egrep
команда с опцией -o
, позволит Вам печатать просто подобранные (непустые) части согласующего отрезка длинной линии, указанного шаблоном поиска. По умолчанию, однако, вся строка будет распечатана.
$ egrep -o "^.{44}" foo