我想将一行标题添加到现有的CSV文件中,进行编辑。 我怎样才能做到这一点?
echo 'one, two, three' > testfile.csv
我想结束
column1, column2, column3 one, two, three
(改变最初的CSV输出不在我手中)
编辑:我最初有这个'使用sed',但任何标准的命令会做。 重要的是文件被编辑到位,并且该行被插入到文件的开头。 谢谢,
这会在文件的开头添加自定义文本:
echo 'your_custom_escaped_content' > temp_file.csv cat testfile.csv >> temp_file.csv mv temp_file.csv testfile.csv
回答你原来的问题,这里是你如何使用sed来做到这一点:
sed -i '1icolumn1, column2, column3' testfile.csv
“1i”命令告诉sed转到第1行并在那里插入文本。
-i选项使文件“就地”编辑,也可以采用可选参数来创建备份文件
sed -i~ '1icolumn1, column2, column3' testfile.csv
将原始文件保存在“testfile.csv〜”中。
据我所知,你想要在现有的one, two, three
上加上one, two, three
。
我会使用ed
代替sed
,因为sed
在标准输出上写入,而不是在文件中。
命令:
printf '0a\ncolumn1, column2, column3\n.\nw\n' | ed testfile.csv
应该做的工作。
perl -i
也值得一看。
这不使用sed,但使用>>将附加到一个文件。 例如:
echo 'one, two, three' >> testfile.csv
编辑 :要添加到文件,尝试这样的事情:
echo "text"|cat - yourfile > /tmp/out && mv /tmp/out yourfile
我通过快速的Google搜索找到了这个。
sed是基于行的,所以我不知道你为什么要用sed来做这个。 这个范例是一次更多的处理一行(你也可以编程的方式找到CSV中的字段并用awk生成你的标题行)为什么不只是
echo "c1, c2, ... " >> file cat testfile.csv >> file
?
使用perl -i,用你想要插入的命令替换第一行的开头(.bk将会有你的原始文件被备份的效果):
perl -i.bk -pe 's/^/column1, column2, column3\n/ if($.==1)' testfile.csv
在两个命令的文件开头添加一个给定的行:
cat <(echo "blablabla") input_file.txt > tmp_file.txt mv tmp_file.txt input_file.txt