여러 열 이름을 편집하는 방법은 무엇입니까?

여러 열 이름을 편집하는 방법은 무엇입니까?

다음과 같은 파일이 있습니다.

CHROM POS ID A1_FREQ A1 REF DIR P OBS_CT
1 785989 1:785989:T:C 0.152651 T C + 0.152225 1641
1 1130727 1:1130727:A:C 0.0877514 C A - 0.987139 1641
1 1156131 1:1156131:T:C 0.160878 C T - 0.764454 1641
1 1158631 1:1158631:A:G 0.10847 A G + 0.795453 1641

이 9개의 열 이름을 다음 9개의 이름으로 변경하고 싶습니다.

Chr BP Marker MAF A1 A2 Direction pValue N

모든 열은 공백으로 구분되어 있다는 점을 언급하고 싶습니다.

나는 이것을 할 수 있다:

sed -e '1s/CHROM/Chr/' -e '1s/POS/BP/' ... 

그런데 명령어가 너무 길어요... 다른 방법은 없을까요?

답변1

awk 'NR == 1 { $0 = "Chr BP Marker MAF A1 A2 Direction pValue N" }; 1' file >newfile

awk이는 파일의 헤더 대신 완전히 새로운 헤더를 출력하는 데 사용됩니다 . 다른 모든 줄은 원본 파일에 있던 대로 유지됩니다. newfile결과와 함께 이름이 지정된 새 파일이 생성됩니다.

사용 sed:

{
    echo 'Chr BP Marker MAF A1 A2 Direction pValue N'
    sed 1d file
} >newfile

그러면 새 헤더가 출력되고 첫 번째 헤더를 제외하고 원본 파일에서 계속해서 라인이 생성됩니다. 이전과 마찬가지로 출력은 newfile.

관련 정보