我想在现有的 CSV 文件中添加一行标题,并就地编辑。我怎样才能做到这一点?
echo 'one, two, three' > testfile.csv
我想结束
column1, column2, column3
one, two, three
我无法更改初始 CSV 输出。
任何标准命令都可以。重要的是文件被编辑到位,并且在文件的开头插入了行。
要回答您最初的问题,以下是使用 sed 的方法:
sed -i '1icolumn1, column2, column3' testfile.csv
“1i”命令告诉 sed 转到第 1 行并在那里插入文本。
-i 选项使文件被“就地”编辑,也可以采用可选参数来创建备份文件,例如
sed -i~ '1icolumn1, column2, column3' testfile.csv
会将原始文件保留在“testfile.csv~”中。
这会在文件开头添加自定义文本:
echo 'your_custom_escaped_content' > temp_file.csv
cat testfile.csv >> temp_file.csv
mv temp_file.csv testfile.csv
这不使用 sed,但使用 >> 将附加到文件。例如:
echo 'one, two, three' >> testfile.csv
编辑:要添加到文件中,请尝试以下操作:
echo "text"|cat - yourfile > /tmp/out && mv /tmp/out yourfile
我通过快速谷歌搜索找到了这个。
据我了解,您想column1, column2, column3
在现有的one, two, three
.
我会使用ed
, 代替sed
,因为sed
写入标准输出而不是文件中。
命令:
printf '0a\ncolumn1, column2, column3\n.\nw\n' | ed testfile.csv
应该做的工作。
perl -i
也值得一看。
sed 是基于行的,所以我不确定您为什么要使用 sed 来执行此操作。范式更多的是一次处理一行(您也可以通过编程方式找到 CSV 中的字段数并使用 awk 生成标题行)为什么不只是
echo "c1, c2, ... " >> file
cat testfile.csv >> file
?
使用 perl -i,命令将第 1 行的开头替换为您要插入的内容(.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
如何在文件中添加行
sed -i -e "48r../../../../folder1/lines_to_add.txt" a.txt
a.txt - 您要更改的文件 48r 是 a.txt 的行号 有些行在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"