awk questão de comando

0

Estou enfrentando problemas ao tentar substituir a primeira linha de um arquivo de texto usando o comando awk no Unix.

Estou usando esta sintaxe:

awk '{ (FS=OFS=""); if($19=="2") sub($88,"4");print $0 }' input.txt>output.txt

este comando não está editando a primeira linha do arquivo de texto. qual é a razão por trás disso?

    
por Su Bho 30.04.2017 / 04:44

1 resposta

0

É difícil entender o que você está tentando fazer sem um exemplo de sua entrada e saída esperada (em particular, sub($88,"4") parece duvidoso - o primeiro argumento de sub deve ser uma expressão regular). / em>

No entanto, supondo que você queira que um FS vazio seja aplicado ao primeiro registro (linha) de sua entrada, então você precisa configurá-lo antes do primeiro registro ser analisado - usando um% regraBEGIN. Por exemplo, compare

$ printf '123\n456\n' | awk '{FS=OFS=""; print $2}'

5

versus

$ printf '123\n456\n' | awk 'BEGIN{FS=OFS=""} {print $2}'
2
5
    
por steeldriver 30.04.2017 / 04:59