2017-11-28 3 views
0

awk 출력을 열에 표시하고 이전의 끝에 하나를 추가하지 않으려면 어떻게해야합니까?awk가있는 열의 출력을 표시합니다.

+0

것은 아마 할 수있는 간단한 일이 아닌 줄 바꿈의 출력 탭입니다. 즉,'print 'solani 대신에'printf "% s \ t", "solani"를 사용하십시오. a [4]'끝나는 줄 바꿈이 없지만 쉽게 끝낼 수 있습니다. 고치다. –

+0

예! 내 게시물을 업데이트했습니다 (미안) –

+0

ummm, 출력 값의 두 번째 세트를 추가했습니다. 그것들은 같은 소스 파일이나 다른 소스 파일에서 나온 것인가? 다른 방법으로 말하자면 하나의 파일에서 얼마나 많은 출력을 추출 할 것으로 예상합니까? 파일에서 하나 이상의 데이터 집합을 추출 할 수 있다면 질문을 업데이트하여 소스 파일에서 2 세트의 데이터가 어떻게 보이는지 확인하십시오. – markp

답변

1

print 명령은 출력을 새로운 행으로 종료합니다. 따라서 각 데이터 항목이 새 행에 표시되는 이유가 나타납니다.

printf으로 바꾸면 각 출력이 '현재'출력 줄에 남습니다

는 예를 들어, 당신은 명시 적으로 필드 분리 (예를 들어, 공백, 탭)를 지정해야합니다 유의 사항 :

printf "%s\t",$4 # will print field $4 followed by a tab 

를 그리고, 당신은 당신이 print ""를 실행할 수 있습니다 라인을 종료하고자 할 때 또는 printf "\n"을 입력하여 출력 끝에 새 줄 문자를 추가하십시오. 당신은 필드 구분자로 탭을 원하는 가정


, 당신은 같은 하나의 명령으로 다양한 awk 명령을 결합 할 수 있습니다 :

$ awk ' 
/^Query=/ {split($0, a, ".") ; printf "solani.%s\t",a[4]} 
/^$/   {q=1} 
/Length/ && q {split($0, b, "=") ; printf "%s\t",b[2]} 
/./   {q=0} 
/^>/   {split($0, c, ".") ; printf "dadantii.%s\n",c[4] } 
' file 

solani.1  76  dadantii.2053 
관련 문제