한 파일의 헤더를 다른 파일의 헤더로 바꾸는 방법

한 파일의 헤더를 다른 파일의 헤더로 바꾸는 방법

file1.csvin의 제목을 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지정된 파일에서 한 줄 읽기):

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

노트:

file2.csv다음 행에 구분 기호가 포함되어 있으면 /비슷한 오류가 발생합니다 unknown option to `s'. |이 경우 다른 구분 기호를 사용하십시오.

관련 정보