http://awk.freeshell.org/RangeOfFields
Содержит описание, как это сделать. Он также ссылается на http://student.northpark.edu/pemente/awk/awktail.txt, который содержит 3 решения проблемы. Насколько я знаю, если вы присваиваете поле, то выходной разделитель полей используется для объединения всех полей вместе. Таким образом, " "+
внезапно сворачивается в один пробел. Возьмите это с зерном соли, хотя, я не специалист по awk. Например, попробуйте присвоить :
переменной OFS
, и двоеточие вместо пробелов приведет к появлению между полями в выходных данных:
echo a b c | awk 'BEGIN{ OFS = ":" } { $1=""; print }'
$ :b:c
Если вы используете g awk, то вы можете использовать его расширение gensub
, которое я считаю довольно простым для использования:
print gensub($1 "[\t ]*(.*)", "\\1", 1);