awk를 사용하여 여러 파일의 확장자를 제거하여 헤더에 파일 이름 추가

awk를 사용하여 여러 파일의 확장자를 제거하여 헤더에 파일 이름 추가

아래와 같이 세 개의 열이 있는 텍스트 파일이 있습니다.

6:85406127 T:A 0.44 
6:85406139 T:C 0.00
6:85406165 C:G 0.33

세 번째 열의 확장자 앞에 파일 이름을 추가하고 싶습니다.

내가 원하는 출력은 다음과 같습니다.

CHR:POS REF:ALT Filename

6:85406127 T:A 0.44
6:85406139 T:C 0.0
6:85406165 C:G 0.33

그런 다음 다음 명령을 사용했습니다.

for i in *.txt; do awk 'BEGIN{print "CHR:POS REF:ALT "${i%.*}"" {print}' $i ; done

그런데 이런 오류 메시지가 떴어요

awk: cmd. line:1: BEGIN{print "CHR:POS REF:ALT "${i%.*}"" {print}
awk: cmd. line:1:                                ^ syntax error 

답변1

awk사용 중인 파일 이름을 인쇄하고 싶지만 FILENAME문제가 있는 경우 프로젝트가 -block 에 로드되지 않으므로 BEGIN첫 번째 레코드에서 이 작업을 수행해야 합니다.

awk 'NR == 1 { print "Header-Col1","Header-Col2",FILENAME}
     NR>=1 { print }' input_file

"\n"필요한 경우 헤더 줄( ) 뒤에 개행 문자를 추가합니다.

답변2

해결책:

for i in *.txt ; do awk -v fname="${i%.*}" 'NR == 1 { print  "CHR:POS"," ","REF:ALT"," ",fname,"\n" } 
               NR >=1 { print }' $i > "${i%.*}_header.txt" ; done

관련 정보