Você está tentando passar (inválido) a sintaxe do subscrito do bash para o awk, não tenho certeza de como espera que isso funcione.
awk '{ $1 = substr($1, 1, 500) } 1'
1
é apenas uma maneira de retornar true para que awk imprima a linha, substr()
é a chamada real que faz a substring. Da documentação:
substr(string, start, length)
This returns a length-character-long substring of string, starting at character number start. The first character of a string is character number one.
For example, substr("washington", 5, 3) returns "ing". If length is not present, this function returns the whole suffix of string that begins at character number start. For example, substr("washington", 5) returns "ington". This is also the case if length is greater than the number of characters remaining in the string, counting from character number start.
Se você precisar manter o separador de campo, defina OFS
apropriadamente.