【发布时间】:2010-10-04 00:37:47
【问题描述】:
我想在现有 CSV 文件中添加一行标题,并就地编辑。我该怎么做?
echo 'one, two, three' > testfile.csv
我想结束
column1, column2, column3
one, two, three
我无法更改初始 CSV 输出。
任何标准命令都可以。重要的是文件编辑到位,在文件开头插入行。
【问题讨论】:
我想在现有 CSV 文件中添加一行标题,并就地编辑。我该怎么做?
echo 'one, two, three' > testfile.csv
我想结束
column1, column2, column3
one, two, three
我无法更改初始 CSV 输出。
任何标准命令都可以。重要的是文件编辑到位,在文件开头插入行。
【问题讨论】:
这不使用 sed,但使用 >> 将追加到文件。例如:
echo 'one, two, three' >> testfile.csv
编辑:要添加到文件中,请尝试以下操作:
echo "text"|cat - yourfile > /tmp/out && mv /tmp/out yourfile
我通过快速Google search 找到了这个。
【讨论】:
sed 是基于行的,所以我不确定您为什么要使用 sed 来执行此操作。范例更多的是一次处理一行(您也可以通过编程方式找到 CSV 中的字段数并使用 awk 生成标题行)为什么不只是
echo "c1, c2, ... " >> file
cat testfile.csv >> file
?
【讨论】:
据我了解,您希望将 column1, column2, column3 添加到现有的 one, two, three 之前。
我会使用ed 代替sed,因为sed 写入标准输出而不是文件中。
命令:
printf '0a\ncolumn1, column2, column3\n.\nw\n' | ed testfile.csv
应该做的工作。
perl -i 也值得一看。
【讨论】:
这会在文件开头添加自定义文本:
echo 'your_custom_escaped_content' > temp_file.csv
cat testfile.csv >> temp_file.csv
mv temp_file.csv testfile.csv
【讨论】:
使用 perl -i,将第 1 行的开头替换为您要插入的内容(.bk 将具有备份原始文件的效果):
perl -i.bk -pe 's/^/column1, column2, column3\n/ if($.==1)' testfile.csv
【讨论】:
要回答您最初的问题,以下是使用 sed 的方法:
sed -i '1icolumn1, column2, column3' testfile.csv
“1i”命令告诉 sed 转到第 1 行并在那里插入文本。
-i 选项使文件被“就地”编辑,也可以使用可选参数来创建备份文件,例如
sed -i~ '1icolumn1, column2, column3' testfile.csv
会将原始文件保留在“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"
【讨论】: