Mantendo POST formato original passando por AWK
-
03-07-2019 - |
Pergunta
Eu tenho um problema com o uso AWK simplesmente remover um campo de um córrego, ilustrado abaixo:
1 int blah (void)
2 {
3 if (foo) {
4 printf ("blah\n");
5 }
6 return 0;
7 }
Eu uso o seguinte código para remover o primeiro campo:
$ awk '{$ 1 = ""; imprimir}' Example.out
int blah (void)
{
if (foo) {
printf ("blah\n");
}
return 0;
}
Por que é este o caso? É isso porque AWK remove todos os espaços em branco? - isso pode ser evitado
Atenciosamente de antecedência
Solução
http://awk.freeshell.org/RangeOfFields
Contém uma descrição de como fazê-lo. Ele também links para http://student.northpark.edu/pemente/awk/awktail. txt que contém 3 soluções para o problema. Tanto quanto eu sei, se você atribuir a um campo, em seguida, o separador de campos de saída é usado para concatenar todos os campos juntos. Então " "+
suddendly é recolhido para um espaço. Leve-o com um grão de sal, porém, eu não sou nenhum perito awk. Por exemplo, tente atribuir :
ao OFS
variável e dois pontos em vez de espaços irá resultar em entre campos na saída:
echo a b c | awk 'BEGIN{ OFS = ":" } { $1=""; print }'
$ :b:c
Se você usar g awk, então você pode usar sua extensão gensub
que considero bastante simples de usar:
print gensub($1 "[\t ]*(.*)", "\\1", 1);