Você quase já o tem:
awk -F'\t' 'NF==13 {print}' infile > newfile
E, se você estiver em um desses sistemas onde você é cobrado pelo toque de tecla (:) você pode encurtar isso para
awk -F'\t' 'NF==13' infile > newfile
Para fazer vários arquivos em uma varredura,
e realmente mudar os arquivos (e não apenas criar newfiles),
identificar um nome de arquivo que não esteja em uso (por exemplo, scharf
),
e faça um loop, assim:
for f in list do awk -F'\t' 'NF==13 {print}' "$f" > scharf && mv -f -- scharf "$f" done
O list
pode ser um ou mais nomes de arquivo
e / ou padrões de expansão de nome de arquivo curinga; por exemplo,
for f in blue.data green.data *.dat orange.data red.data /ultra/violet.dat
O comando mv
sobrescreve o arquivo de entrada (por exemplo, blue.data
)
com o arquivo scharf
temporário
(que tem apenas as linhas do arquivo de entrada com 13 campos).
(Certifique-se de que isso é o que você quer fazer e tenha cuidado.
Para estar seguro, você provavelmente deve fazer backup de seus dados primeiro.)
O -f
informa mv
para sobrescrever o arquivo de entrada,
mesmo que já exista.
O --
protege você contra a estranheza
se algum dos seus arquivos tiver um nome começando com -
.