如何使用bash或shell命令复制CSV文件的表头首行
重复CSV文件表头的Shell命令实现方案
以下方案均适用于常规单行列名的CSV场景,执行后可在文件开头重复一次表头,输出符合预期效果。若表头包含带引号包裹的换行等复杂格式,需使用专门的CSV解析工具处理。
方法1:sed命令(推荐,可直接修改原文件)
直接打印第一行后追加一次第一行内容:
# 仅输出结果,不修改原文件 sed '1h;1G' your_file.csv # 直接修改原文件(Linux版本) sed -i '1h;1G' your_file.csv # 直接修改原文件(MacOS版本) sed -i '' '1h;1G' your_file.csv
命令逻辑:1h 将第一行内容存入缓存区,1G 将缓存区内容追加到第一行末尾。
方法2:awk命令(逻辑直观易理解)
匹配到第一行时打印两次,其余行正常打印:
# 仅输出结果,不修改原文件 awk 'NR==1{print; print} NR>1' your_file.csv # 直接修改原文件(需安装GNU awk) gawk -i inplace 'NR==1{print; print} NR>1' your_file.csv
命令逻辑:NR 表示当前处理的行号,行号为1时执行两次打印操作,行号大于1时直接打印原行。
方法3:head+cat组合(新手友好,无额外学习成本)
先提取第一行,再输出完整文件内容,合并后写入新文件:
(head -n 1 your_file.csv; cat your_file.csv) > new_your_file.csv
执行后会生成表头重复的新文件new_your_file.csv,不会修改原文件。
内容的提问来源于stack exchange,提问作者riykrsh
相关产品推荐
相关产品推荐

