아래와 같이 세 개의 열이 있는 텍스트 파일이 있습니다.
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