如何在shell脚本中向文件添加一行?

use*_*812 41 linux shell sed

我想在现有的CSV文件中添加一行标题,然后进行编辑.我怎样才能做到这一点?

echo 'one, two, three' > testfile.csv
Run Code Online (Sandbox Code Playgroud)

我想结束

column1, column2, column3
one,     two,     three
Run Code Online (Sandbox Code Playgroud)

更改初始CSV输出不在我手中.

任何标准命令都可以.重要的是文件在适当的位置编辑,并在文件的开头插入行.

Mat*_*ley 69

要回答您的原始问题,请使用sed执行以下操作:

sed -i '1icolumn1, column2, column3' testfile.csv
Run Code Online (Sandbox Code Playgroud)

"1i"命令告诉sed转到第1行并在那里插入文本.

例如,-i选项使文件"就地"编辑,并且还可以使用可选参数来创建备份文件

sed -i~ '1icolumn1, column2, column3' testfile.csv
Run Code Online (Sandbox Code Playgroud)

将原始文件保存在"testfile.csv~"中.

  • 哪个版本的Unix?这不适用于经过认证的"Single UNIX Specification V3"的Mac OS X Leopard. (5认同)

tun*_*nuz 34

这会在文件的开头添加自定义文本:

echo 'your_custom_escaped_content' > temp_file.csv
cat testfile.csv >> temp_file.csv
mv temp_file.csv testfile.csv
Run Code Online (Sandbox Code Playgroud)


Sco*_*e T 11

这不使用sed,但使用>>将附加到文件.例如:

echo 'one, two, three' >> testfile.csv
Run Code Online (Sandbox Code Playgroud)

编辑:要预先添加到文件,请尝试以下操作:

echo "text"|cat - yourfile > /tmp/out && mv /tmp/out yourfile
Run Code Online (Sandbox Code Playgroud)

我通过Google快速搜索找到了这个.


mou*_*iel 8

据我了解,您希望先column1, column2, column3于现有的one, two, three.

我会用ed它代替sed,因为sed写在标准输出而不是文件中.

命令:

printf '0a\ncolumn1, column2, column3\n.\nw\n' | ed testfile.csv
Run Code Online (Sandbox Code Playgroud)

应该做的工作.

perl -i 值得一看.