Bash 如何更改CSV文件的列名?

Bash 如何更改CSV文件的列名?,bash,csv,Bash,Csv,我有多个CSV文件,看起来像这样: col1,col2 val1,val2 我想将每个文件中的col2更改为column2。如何使用Bash编辑CSV文件的列名?使用sed sed-i'1s/col2/column2/'file.csv 对于多个文件,可以使用循环: for f in file1.csv file2.csv file3.csv do sed -i '1s/col2/column2/' $f done 或者您可以使用find执行sed: find-name*.csv-exec

我有多个CSV文件,看起来像这样:

col1,col2
val1,val2
我想将每个文件中的
col2
更改为
column2
。如何使用Bash编辑CSV文件的列名?

使用
sed

sed-i'1s/col2/column2/'file.csv

对于多个文件,可以使用循环:

for f in file1.csv file2.csv file3.csv
do
sed -i '1s/col2/column2/' $f
done
或者您可以使用
find
执行
sed

find-name*.csv-exec sed-i'1s/col2/column2/'{}\

这将用
column2
使用
sed
替换当前目录及其子目录中所有CSV中的
col2

sed-i'1s/col2/column2/'file.csv

对于多个文件,可以使用循环:

for f in file1.csv file2.csv file3.csv
do
sed -i '1s/col2/column2/' $f
done
或者您可以使用
find
执行
sed

find-name*.csv-exec sed-i'1s/col2/column2/'{}\


这将用
column2

替换当前目录及其子目录中所有CSV中的
col2
,这将更改任何行中的任何col2,即使它是数据的一部分。您可能应该仅将其限制为第1行……当我运行
sed-I's/col2/column2/'$f
时,会出现以下错误:
sed:-e expression#1,char 20:unknown option to
s'`@JerryJeremiah我如何将其限制在第1行?@JerryJeremiah我不希望数据与列标题相同。但是,是的,我应该。请参阅“编辑”。@Username如果仅在一个文件上尝试
sed
,而不使用
$f
,会发生什么情况?双引号$f可防止分词,这将导致sed失败。这将更改任何行中的任何col2,即使它是数据的一部分。您可能应该仅将其限制为第1行……当我运行
sed-I's/col2/column2/'$f
时,会出现以下错误:
sed:-e expression#1,char 20:unknown option to
s'`@JerryJeremiah我如何将其限制在第1行?@JerryJeremiah我不希望数据与列标题相同。但是,是的,我应该。请参见编辑。@Username如果只在一个文件上尝试
sed
,而不使用
$f
?双引号$f会发生什么情况,以防止分词,从而导致sed失败。