Ответ 1
awk '{print substr($0,2,6)}' file
синтаксис для substr() равен
substr(string,start index,length)
Хорошо, поэтому я знаю, что довольно просто печатать конкретные аргументы строки, используя $:
$ cat file
hello world
$ awk '{print $1}' file
hello
Но что, если я хочу печатать символы с 2 по 8? или от 3 до 7? Возможно ли это с awk?
awk '{print substr($0,2,6)}' file
синтаксис для substr() равен
substr(string,start index,length)
Да. Вы можете использовать функцию substr
:
http://www.starlink.rl.ac.uk/docs/sc4.htx/node38.html
В вашем случае - для печатных символов от 2 до 8:
echo "hello" | awk '{ print substr( $0, 2, 6 ) }'
результат:
ELLO
Если Perl является опцией:
perl -lne 'print substr($_,1,6)' file
Вывод идентичен ответу @nims