Игнорировать заголовок при выполнении команды awk - не работает

Я знаю, что было задано несколько вопросов об игнорировании заголовка с помощью команды awk, но я перепробовал кучу предложенных методов, и они все еще не работают для меня.

Я использую awk для вырезания символов из строки, но выходной файл создается без заголовка, хотя заголовок не содержит символов, которые я пытаюсь вырезать.

Вот моя команда:

cat input | awk -F '|' '{print$2}' > output

Эта команда делает то, что мне нужно, но мои строки заголовков остаются пустыми. Я пытаюсь напечатать все после "|" символ, но я хочу сохранить заголовки в моем входном файле (который включает в себя первые две строки). Я пробовал использовать NR>2, но безрезультатно. Возможно, я не помещаю команду игнорирования заголовка в нужное место. Любая помощь приветствуется. Спасибо!!

Вот пример ввода:

Total Number of Mapped Reads = XXXX
Genome Final Guess Final Hit 
ACCN2|Bacterial Species 5.4 3.5
ACCN4|Bacterial Species 2.6 8.7

Желаемый результат:

Total Number of Mapped Reads = XXXX
Genome Final Guess Final Hit 
Bacterial Species 5.4 3.5
Bacterial Species 2.6 8.7

awk
person Pablita    schedule 12.04.2018    source источник
comment
Опубликуйте некоторые образцы данных с ожидаемым результатом. Кроме того, эта команда не вырезает символы из строки, а печатает второй столбец | отдельный файл input.   -  person James Brown    schedule 12.04.2018
comment
Да, извините, это то, что я имел в виду. Это то, что мне нужно, чтобы это сделать.   -  person Pablita    schedule 12.04.2018


Ответы (1)


Ваша примерная команда печатает второе поле | отдельный файл. Поскольку первые 2 записи имеют только 1 поле, ничего не печатается с $2, вместо этого печатается последнее поле $NF:

$ awk -F\| '{print $NF}' file
Total Number of Mapped Reads = XXXX
Genome Final Guess Final Hit 
Bacterial Species 5.4 3.5
Bacterial Species 2.6 8.7
person James Brown    schedule 12.04.2018
comment
Верно. Или awk -F\| 'NR>2{$0=$2} 1' file - person Ed Morton; 12.04.2018