awk -v m="\x0a" -v N="3" '{$N=m$N ;print substr($0, index($0,m)+1)}'
Это обрезает то, что находится перед заданным номером поля, N, и печатает всю остальную часть строки, включая поле номер 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 внутри линий.