O shell pode fazer loops:
for i in *.csv; do
grep -v "=" "$i" | cut -f 1-4,9,14,15,19,21,22,24,26 > "new.$i"
done
Embora, se você tiver incorporado separadores de campo em seus campos, isso será bombardeado. Mas não por causa do loop.
Eu tenho ~ 2k arquivos que eu quero extrair 12 de 26 colunas e salvar as informações extraídas em um novo arquivo. Eu tenho feito isso para arquivos individuais usando
cat "oldfile.csv" | grep -v "=" | cut -f 1-4,9,14,15,19,21,22,24,26 > newfile.csv
Deve haver uma maneira de fazer todos os arquivos com uma série de comandos Unix.
Qualquer ajuda é muito apreciada
O shell pode fazer loops:
for i in *.csv; do
grep -v "=" "$i" | cut -f 1-4,9,14,15,19,21,22,24,26 > "new.$i"
done
Embora, se você tiver incorporado separadores de campo em seus campos, isso será bombardeado. Mas não por causa do loop.
Se você quiser fornecer arquivos específicos como argumento para um script, por exemplo, script chamado process_csv.sh
#!/bin/bash
for arg; do
grep -v "=" "${arg}" | cut -f 1-4,9,14,15,19,21,22,24,26 > "${arg}.new"
done
Agora você pode executar este script da seguinte forma,
./process_csv.sh *.csv
OR
./process_csv.sh first.csv fifth.csv seventh.csv
OR
./process_csv.sh somefile1 somefile2
Antes que alguém o indique, no script acima, se você não quiser preservar os argumentos, use shift
no script.
Tags bash shell shell-script cut