문자 별 awk 분할 매개 변수

파일 :

BASH.NIR SH.ABI 

awk 스크립트를 원합니다. 표시 :

User is NIR, SHELL is BASH User is ABI, SHELL is SH 

문자로 매개 변수를 분할하는 방법을 모르겠습니다. 아이디어는 다음과 같습니다.

cat file.txt | awk "{print "User is " afterDot($1) ", SHELL is " beforeDot($1)}" 

Answer

awk에서 문자열 함수를 사용할 수 있습니다.

p>

$ (echo BASH.NIR; echo SH.ABI FOOBAR) | awk "{p=index($1,".");print "User is", substr($1,p+1) ", SHELL IS", substr($1,0,p-1)}" User is NIR, SHELL IS BASH User is ABI, SHELL IS SH 

index 함수는 찾을 문자 (이 경우 점)의 위치를 반환합니다. 그리고 strstr는 하위 문자열을 반환합니다. 점을 포함하지 않으려면 p+1p-1를 사용합니다.

자세한 내용은 awk 맨 페이지의 “문자열 함수”섹션을 참조하십시오.

답변

.를 입력란 구분자로 사용할 수 있습니다.

awk -F. "{ print "User is " $2 ", SHELL is " $1 }" file.txt 

댓글

  • 텍스트 파일은 공백이 있습니다
  • @nir 질문에 정확한 입력 샘플을 붙여 넣으세요. ' 어떻게 보이는지 추측 할 수 없습니다. 제대로 표현하지 않는 한 좋아합니다.
  • @nir-' 항상 실제 예제 데이터를 포함하는 것이 가장 좋습니다. 변환 된 데이터는 일반적으로 잘못된 솔루션으로 이어지기 때문에 일반적으로 답변 '의 시간을 낭비합니다.
  • 맞아요, 다음 번에 양식을 작성합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다