我有一个巨大的csv文件(按TB级排序)。
现在,我想在顶部插入一行标题。
例如,如果input.csv如下所示:
1,2,3,4
22,3,23,1
我希望它看起来像
id1,id2,id3,id4
1,2,3,4
and so on
我如何从shell,terminal,awk,bash?/
这样做答案 0 :(得分:22)
到位,使用sed:
sed -i 1i"id1,id2,id3,id4" file.csv
编辑:
正如@Ed Morton指出的那样,使用带有-i
开关sed的sed编辑文件,因此在编辑大文件时会很危险。如果您在-i
选项后提供前缀,则sed会创建备份。所以这样的事情会更安全:
sed -i.bak 1i"id1,id2,id3,id4" file.csv
原始文件将位于file.csv.bak
答案 1 :(得分:14)
这很简单:
{ echo "id1,id2,id3,id4"; cat file.csv; } > newfile.csv
使用简单的shell连接。
修改强>
在下面的讨论主题之后,我建议:
head.txt
然后:
cat head.txt file.csv > newfile.csv
答案 2 :(得分:2)
编辑。当我写这个答案时,我忽略了问题的“太字节”部分。因此,不使用此处提供的方法。我仍然留下这篇文章,因为它宣传使用这个奇妙的工具,ed
,标准文本编辑器。
像往常一样,ed
是标准文本编辑器。使用sed -i
的解决方案并没有提到“编辑文件”。相反,它将其内容输出到临时文件,然后将此文件重命名为原始文件。这对大文件来说真的不好!
使用ed
代替实际编辑文件。以下内容:
#!/bin/bash
file="input.csv"
{
ed -s "$file" <<EOF
1
i
id1,id2,id3,id4
.
wq
EOF
} > /dev/null
说明:1
转到第一行,i
进入插入模式,然后我们插入id1,id2,id3,id4
然后.
返回正常模式,wq
1}}写和退出。
使用这种方法,你真的在编辑文件,它比sed方法快两倍。另外,ed
被称为“大文件安全”!
完成。
答案 3 :(得分:1)
没有简单的方法,你将不得不重写文件。可能最安全的方法是
( echo "id1,id2,id3,id4" ; cat file ) > newFile && rm file
IHTH
答案 4 :(得分:-2)
echo "id1,id2,id3,id4" >> data.csv