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
gnu sed
を使用して(R
指定されたファイルから1行を読む):
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
1行だけが含まれている場合
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
メモ:
file2.csv
次の行に区切り文字が含まれていると、/
同様のエラーが発生しますunknown option to `s'
。|
この場合は、別の区切り文字を使用してください。