그래서 저는 여기서 제가 하고 싶은 것과 반대되는 질문을 발견했습니다.동일한 헤더로 여러 파일 연결.
헤더의 ">" 문자를 기반으로 2개의 파일(동일한 하위 문자열을 가진 해당 파일의 디렉터리 내 수백 개의 파일 중)을 하나의 파일로 병합하거나 연결하려고 합니다. 각 파일마다 수천개의 헤더가 있는데 제가 첨부한 링크에서 묻는 질문과 달리 헤더 이외의 내용은 동일하므로 ">"로 시작하는 모든 줄 외에는 아무것도 변경하고 싶지 않습니다.
기본적으로 ">" 문자를 공유하여 file1과 file2를 결합하고 file1의 내용을 순서대로 유지하고 싶습니다.
File1
> MGBNCNOSNC_142
9u2o4840204a9
> MGBNCNOSNC_143
AOISCJNWDCSNDCCW
> MGBNCNOSNC_144
AOISCJ40204DZZW
File2
>King_Henry
>Queen_jerry
>Jack_jill
Output
> MGBNCNOSCNC_142 > King_henry
9u2o4840204a9
> MGBNCNOSCNC_143 > Queen_jerry
AOISCJNWDC
> MGBNCNOSNC_144 > Jack_jill
gefSCJ40204DZZW
도움을 주셔서 감사합니다. 더 명확하게 설명할 수 있으면 알려주세요!
답변1
File2
인덱스된 awk 배열로 행을 읽은 다음 순차적으로 추가할 수 있습니다 .File
awk '
NR==FNR {a[i++]=$0; next}
/^>/ {$0 = $0" "a[j++];}
{print}
' File2 File1
또는 GNU sed(확장 기능 포함)가 있는 경우 R
시도해 볼 수 있습니다.
sed '/^>/ R File2' File1 | sed '/^>/ {N;s/\n/ /}'
각 File1
줄이 추가 줄과 일치해야 하는 경우 다른 옵션은 공백을 두 배로 늘린 File2
다음 paste
파일을 합치는 것입니다.
sed 'G' File2 | paste -d ' ' File1 -
일치하지 않는 줄에 추가 공백이 생기더라도 이것이 바람직하지 않은 경우 구분 기호 File2
없이 각 줄의 시작 부분에 공백을 삽입 할 수 있습니다.paste
sed 's/^/ /; G' File2 | paste -d '' File1 -