操作和保存多个文件

操作和保存多个文件

我有大约 2k 个文件,我想提取 26 列中的 12 列并将提取的信息保存到新文件中。我一直在使用单个文件执行此操作

cat "oldfile.csv" | grep -v "=" | cut -f 1-4,9,14,15,19,21,22,24,26 > newfile.csv

必须有一种方法可以使用一系列 Unix 命令来处理所有文件。

任何帮助是极大的赞赏

答案1

shell 可以执行循环:

for i in *.csv; do 
    grep -v "=" "$i" | cut -f 1-4,9,14,15,19,21,22,24,26 > "new.$i"
done

不过,如果您在字段中嵌入了字段分隔符,这将会失败。但不是因为循环。

答案2

如果您想提供特定文件作为脚本的参数,例如名为的脚本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

现在您可以按如下方式运行此脚本,

./process_csv.sh *.csv或者

./process_csv.sh first.csv fifth.csv seventh.csv或者

./process_csv.sh somefile1 somefile2

在有人指出之前,在上面的脚本中,如果您不想保留可以shift在脚本中使用的参数。

相关内容