我想file1.csv
用 in 的标题替换 in 的标题file2.csv
file1.csv
"a","b","c"
file2.csv
"x","y","z"
我想要file1.csv
的标题为
"x","y","z"
请告诉我该怎么做?我试过
sed -i "1 s/^.*$/$file2.csv/" file1.csv
但它不带""
(引号)。我想要带有引号的标题。
答案1
如果你坚持这样做sed
:
( sed 1q file2.csv; sed 1d file1.csv ) >file3.csv && mv file3.csv file1.csv
没有sed
:
( head -1 file2.csv; tail -n +2 file1.csv ) >file3.csv && mv file3.csv file1.csv
答案2
With gnu sed
, using R
(从指定文件中读取一行):
sed -i -e '1{R SOURCE' -e 'd}' DESTINATION
或使用ed
,打开DESTINATION
并读入SOURCE
第一行后的标题,然后删除第一行:
ed -s DESTINATION <<\IN
1r ! head -n1 SOURCE
1d
w
q
IN
答案3
如果file2.csv
只包含单行
sed -i "1 s/.*/$(< file2.csv)/" file1.csv
如果file2.csv
包含多行
sed -i "1 s/.*/$(sed '1q' file2.csv)/" file1.csv
或者
sed -i "1 s/.*/$(head -1 file2.csv)/" file1.csv
笔记:
如果 line fromfile2.csv
包含分隔符/
,它将抛出类似 的错误unknown option to `s'
。|
在这种情况下使用不同的分隔符