% echo $Organs | awk '{ \
for (i = 3; i <= NF; i++) { \
printf("%s ", $i); \
} \
printf("\n") }'
Como imprimo todas as palavras do $ Organs (do terceiro campo) com um espaço entre cada órgão para outro? Meu problema é que cada parâmetro de $ Organ tem um número de órgãos diferente, então não posso adivinhar o último número de campo. Eu preciso da sintaxe do awk que imprime o parametro $ Organs do terceiro campo até o último campo com um espaço entre a palavra.
Organs="a bb c ddd ee ff rr ff"
Organs="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 20 21 22"
Organs="I need to lern awk I hope I will do the best"
Organs="I need help"
echo $Organs| awk '{print $3" "$4" "$5" "$6 .......?}'
Tente algo assim:
for (i = 3; i <= NF; i++)
printf("%s ", $i);
print ""
NF fornece o número de campos na linha. Dê uma olhada neste FAQ:
Concorda melhor com o stackoverflow.com.
awk '{
$1=$2="" # suppress first two fields
out=substr($0, 3) # suppress the two leading occurrences of OFS that remain
print out
}'
Isso pressupõe que o OFS avalie em um único espaço, que é seu valor padrão.
Esta solução pode ser um pouco mais rápida que as outras. Ele poderia ser mais lento também: depende de ser mais rápido reatribuir campos e recuperar $0
, como esta solução, ou implementar um loop de awk, como as outras soluções fazem. Mas você não vai notar a diferença de velocidade, de qualquer forma.
Tags awk