加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 将CSV文件的第一行更改为全部大写

发布时间:2020-12-15 22:51:24 所属栏目:安全 来源:网络整理
导读:我有一组csv文件,对于每个文件,第一行包含数据集的列名.某些csv文件具有所有大写列名称,其他csv文件具有所有小写列名称.我的问题是如何更改每个csv文件,以便每个文件的第一行(也就是列名称)显示为每列中的所有大写字符串? 我的尝试如下: 首先,我手动检查所
我有一组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

我想知道是否有更自动化的方法来执行此操作,而无需手动浏览每个文件.

例子:

Dataset1.csv

a b c
x x x

Dataset2.csv

A B C
y y y

如何使Dataset1.csv如下所示?

A B C
x x x

解决方法

以下简单的awk也可以帮助你.

awk 'NR==1{$0=toupper($0)} 1'  Input_file

说明:
NR == 1:如果是第一行则检查条件,然后执行以下操作:

$0 = toupper($0)将当前行的值设为UPPER CASE并保存到它.

1 awk在条件方法和行动方面有效,所以我在这里做条件为TRUE而在此处没有提及任何动作,所以默认情况下会打印当前行.

如果您想将输出保存到Input_file本身,请在上面的解决方案后面附加> temp_file&& mv temp_file Input_file.其中Input_file是您要更改或传递给awk的数据文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读