awk -v m="\x0a" -v N="3" '{$N=m$N ;print substr($0, index($0,m)+1)}'
Это прерывает то, что перед заданным полем nr., N, и печатает всю оставшуюся часть строки, включая поле nr.N и поддерживая исходный интервал (он не форматируется) Не имеет значения, если строка поля появляется также где-то еще в строке, что является проблемой с ответом daisaa.
Определить функцию:
fromField () {
awk -v m="\x0a" -v N="$1" '{$N=m$N; print substr($0,index($0,m)+1)}'
}
И используйте это так:
$ echo " bat bi iru lau bost " | fromField 3
iru lau bost
$ echo " bat bi iru lau bost " | fromField 2
bi iru lau bost
Выход поддерживает все, включая конечные пробелы
Хорошо работает для файлов, где '/ n' является разделителем записей, поэтому у вас нет этого символа новой строки внутри строк. Если вы хотите использовать его с другими разделителями записей, используйте:
awk -v m="\x01" -v N="3" '{$N=m$N ;print substr($0, index($0,m)+1)}'
например. Хорошо работает почти со всеми файлами, если они не используют шестнадцатеричный символ номер. 1 внутри строк.