Использование awk для печати символов определенного индекса на строке

Хорошо, поэтому я знаю, что довольно просто печатать конкретные аргументы строки, используя $:

$ cat file
hello world

$ awk '{print $1}' file
hello

Но что, если я хочу печатать символы с 2 по 8? или от 3 до 7? Возможно ли это с awk?

Ответ 1

awk '{print substr($0,2,6)}' file

синтаксис для substr() равен

substr(string,start index,length)

Ответ 2

Да. Вы можете использовать функцию substr:

http://www.starlink.rl.ac.uk/docs/sc4.htx/node38.html

В вашем случае - для печатных символов от 2 до 8:

echo "hello" | awk '{ print substr( $0, 2, 6 ) }'

результат:

ELLO

Ответ 3

Если Perl является опцией:

perl -lne 'print substr($_,1,6)' file

Вывод идентичен ответу @nims