Как распечатать последние 5 полей в awk?

У меня есть 10 полей, и я хочу начать с поля 5 в поле 10 и игнорировать первые 5 полей. Как я могу использовать NF в awk для этого?

f1 f2 f3 f4 f5 f6 f7 f8 f9 f10
c1 c2 c3 c4 c5 c6 c7 c8 c9 c10

Я хочу показать только:

f6 f7 f8 f9 f10
c6 c7 c8 c9 c10
1
задан 22 December 2016 в 21:09

1 ответ

Просто обработайте интересующие поля. Это будет последнее поле -4, последнее поле -3, до фактического последнего поля.

Чтение из файла с этим контентом (file.txt):

f1 f2 f3 f4 f5 f6 f7 f8 f9 f10
c1 c2 c3 c4 c5 c6 c7 c8 c9 c10
[d3 ] Запустите awk в файле, как описано ниже. Строкой с знаком $ является команда. Последние две строки - это выход.

$ awk '{print $(NF-4)" "$(NF-3)" "$(NF-2)" "$(NF-1)" "$NF}' file.txt
f6 f7 f8 f9 f10
c6 c7 c8 c9 c10

file.txt : Как заметил Кир в комментарии, я удалил скрипт bash и оставил только оператор печати сделать это проще и быстрее.

3
ответ дан 23 May 2018 в 03:06
  • 1
    или awk '{print $(NF-4)" "$(NF-3)" "$(NF-2)" "$(NF-1)" "$NF}' file.txt – Cyrus 22 December 2016 в 23:15
  • 2
    Благодаря ! Я добавлю более короткую версию к ответу. Оставив кошку. – L. D. James 22 December 2016 в 23:16

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

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