Se os seus parâmetros forem separados de forma confiável por exatamente um espaço cada, você poderá usar cut
da seguinte forma:
echo p1 p2 p3 p4 p5 p6 p7 | cut -d' ' -f4- # For p4 onwards
echo p1 p2 p3 p4 p5 p6 p7 | cut -d' ' -f4-6 # For p4 to p6
Se você quiser parâmetros separados por espaços em branco, a maneira como awk
os analisa, de maneira confiável, fica mais complicada. Para um exemplo do que estou falando e como o acima pode nem sempre fazer o que você quer, tente:
printf '%s ' p1 p2 p3 p4 p5 p6 p7 | cut -d' ' -f4-
printf '%s ' p1 p2 p3 p4 p5 p6 p7 | cut -d' ' -f4-6
Você pode ver que cut
está tratando cada espaço como um delimitador, em vez de qualquer sequência de espaços consecutivos como um delimitador da maneira que awk
faz. Você pode forçar o awk
a fazer o que quiser com um loop:
echo p1 p2 p3 p4 p5 p6 p7 | awk '{for (a=4;a<=NF;a++) {printf "%s ", $a} printf "\n"}'
No entanto, isso deixa um espaço à direita no final da linha. Isso pode ser resolvido, mas fica mais confuso e confuso. Dependendo dos seus requisitos, o comando cut
pode estar bem.