我想在现有的CSV文件中添加一行标题,然后进行编辑。我怎么能这样做?
echo 'one, two, three' > testfile.csv
我希望最终得到
column1, column2, column3
one, two, three
更改初始CSV输出不在我手中。
任何标准命令都可以。重要的是文件在适当的位置编辑,并在文件的开头插入行。
答案 0 :(得分:68)
要回答您的原始问题,请按以下步骤操作:
sed -i '1icolumn1, column2, column3' testfile.csv
“1i”命令告诉sed转到第1行并在那里插入文本。
-i选项使文件“就地”编辑,并且还可以使用可选参数来创建备份文件,例如
sed -i~ '1icolumn1, column2, column3' testfile.csv
将原始文件保存在“testfile.csv~”中。
答案 1 :(得分:33)
这会在文件开头添加自定义文字:
echo 'your_custom_escaped_content' > temp_file.csv
cat testfile.csv >> temp_file.csv
mv temp_file.csv testfile.csv
答案 2 :(得分:10)
这不使用sed,而是使用>>将附加到文件。例如:
echo 'one, two, three' >> testfile.csv
修改:要预先添加到文件中,请尝试以下操作:
echo "text"|cat - yourfile > /tmp/out && mv /tmp/out yourfile
我通过快速Google search找到了这个。
答案 3 :(得分:8)
据我了解,您希望将column1, column2, column3
添加到现有的one, two, three
。
我会使用ed
代替sed
,因为sed
会在标准输出上而不是在文件中写入。
命令:
printf '0a\ncolumn1, column2, column3\n.\nw\n' | ed testfile.csv
应该做的工作。
perl -i
值得一看。
答案 4 :(得分:3)
sed是基于行的,所以我不确定你为什么要用sed这样做。范例是一次更多地处理一行(您也可以以编程方式找到CSV中的字段数并使用awk生成标题行)为什么不只是
echo "c1, c2, ... " >> file
cat testfile.csv >> file
答案 5 :(得分:1)
使用perl -i,使用一个命令将第1行的开头替换为要插入的内容(.bk将具有备份原始文件的效果):
perl -i.bk -pe 's/^/column1, column2, column3\n/ if($.==1)' testfile.csv
答案 6 :(得分:1)
使用两个命令在文件开头添加给定行:
cat <(echo "blablabla") input_file.txt > tmp_file.txt
mv tmp_file.txt input_file.txt
答案 7 :(得分:0)
如何在文件中添加一行
sed -i -e "48r../../../../folder1/lines_to_add.txt" a.txt
<块引用>
a.txt - 要更改的文件 48r 是 a.txt some 的行号 行在lines_to_add.txt文件中
../../../../scripts3_2d/lines_to_add.txt
<块引用>
-i 更新a.txt,运行代码前尝试不使用-i,注意换行,
"keep a newline at the end of lines_to_add.txt"