linux, awk 또는 sed를 사용하여 gen.gz 파일의 내용을 편집하세요.

linux, awk 또는 sed를 사용하여 gen.gz 파일의 내용을 편집하세요.

6000개의 열이 포함된 유전 데이터 파일이 있습니다 gen.gz. 데이터는 다음과 같습니다:

1 1:13380:C:A 13380 C A

두 번째 열을 다음과 같이 편집하고 싶습니다.

1 1:13380 13380 C A

두 번째 열에서 4자를 제거하고 싶습니다.

입력은 gen.gz파일이고 출력이 동일하기를 원합니다.

답변1

필드가 공백 문자로 구분되어 있다고 가정하면 파일의 압축을 풀고 awk수정을 위해 가져온 다음 결과 데이터를 새 파일 이름으로 압축할 수 있습니다. 이는 압축되지 않은 데이터를 디스크에 저장하지 않고 단일 파이프라인에서 수행할 수 있습니다. 작업이 완료된 후 결과를 확인하고 정상으로 보이면 원래 결과를 교체하십시오.

gzip -d -c gen.gz |
awk '{ sub(":[^:]*:[^:]*$", "", $2); print }' |
gzip -c >new-gen.gz

# look at new-gen.gz, and then

mv new-gen.gz gen.gz   # only if you want to discard the original data!

awk코드는 다양한 방법으로 수행될 수 있습니다. :제안한 대로 마지막 4자를 제거하는 대신 두 번째 필드에서 마지막 2개의 구분된 문자열을 제거하기 로 결정했습니다 . 항상 문자가 하나만 있는 경우 :[^:]*:[^:]*$정규식을 다음과 같이 작성할 수 있습니다 :.:.$.

압축 파일의 데이터를 수정하고 있으므로 파일을 그 자리에서 실제로 편집할 수는 없습니다( 에서처럼 sed -i).

관련 정보