以下是一个示例解决方案,展示如何使用Bash脚本将列添加到CSV文件并重写标题:
#!/bin/bash
# 获取当前目录下所有CSV文件
csv_files=$(ls *.csv)
# 循环处理每个CSV文件
for file in $csv_files; do
# 获取文件名前缀
prefix="${file%.*}"
# 添加新列并重写标题
awk -F',' -v OFS=',' 'NR==1{$1="New Column"; print; next} {$1=""; print}' "$file" > "${prefix}_updated.csv"
done
在上述示例中,我们首先使用ls *.csv
命令获取当前目录下所有的CSV文件,并将其保存在变量csv_files
中。然后,我们使用一个循环来逐个处理这些CSV文件。
在循环中,我们首先使用${file%.*}
获取每个文件的文件名前缀,存储在变量prefix
中。
接下来,我们使用awk命令来添加新列并重写标题。-F','
参数指定输入文件的字段分隔符为逗号,-v OFS=','
参数指定输出文件的字段分隔符也为逗号。
在awk命令中,NR==1
表示处理第一行(标题行)。我们将第一列的值设置为"New Column",然后打印整行。
在其他行中,我们将第一列的值设置为空,并打印整行。
最后,我们使用重定向操作符>
将输出重定向到一个新的文件${prefix}_updated.csv
中,其中${prefix}
是文件名前缀。
请注意,此示例假设所有的CSV文件都位于当前目录下,并且没有子目录。如果你的情况有所不同,你可能需要进行相应的修改。