我有一组csv文件,对于每个文件,第一行包含数据集的列名.某些csv文件具有所有大写列名称,其他csv文件具有所有小写列名称.我的问题是如何更改每个csv文件,以便每个文件的第一行(也就是列名称)显示为每列中的所有大写字符串?
我对它的尝试如下:首先,我手动检查所有文件以查看哪些文件具有大写和小写的列名,然后运行以下命令:
head -1 uppercase.csv > header.csv
#repeated all commands below for all lowercase files individually
sed -i 1d lowercase.csv
cat header.csv lowercase.csv > lowercase_new.csv
rm lowercase.csv
mv lowercase_new.csv lowercase.csv
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更自动化的方法来执行此操作,而无需手动浏览每个文件.
Dataset1.csv
a b c
x x x
Run Code Online (Sandbox Code Playgroud)
Dataset2.csv
A B C
y y y
Run Code Online (Sandbox Code Playgroud)
如何使Dataset1.csv如下所示?
A B C
x x x
Run Code Online (Sandbox Code Playgroud)
以下简单awk
也可以帮助你.
awk 'NR==1{$0=toupper($0)} 1' Input_file
Run Code Online (Sandbox Code Playgroud)
说明::
NR==1
如果是第一行,则检查条件,然后执行以下操作:
$0=toupper($0)
将当前行的值设置为UPPER CASE并保存到它.
1
awk
在条件的方法,然后行动,所以我在这里条件为TRUE,并没有在这里提到任何动作,所以默认情况下将打印当前行.
如果您想将输出保存到Input_file本身,请在上面的解决方案中附加以下内容> temp_file && mv temp_file Input_file
.其中Input_file是您要更改或传递给的数据文件awk
.