다음과 같은 파일이 있습니다.
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
.