파일 :
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+1
및 p-1
를 사용합니다.
자세한 내용은 awk
맨 페이지의 “문자열 함수”섹션을 참조하십시오.
답변
.
를 입력란 구분자로 사용할 수 있습니다.
awk -F. "{ print "User is " $2 ", SHELL is " $1 }" file.txt
댓글
- 텍스트 파일은 공백이 있습니다
- @nir 질문에 정확한 입력 샘플을 붙여 넣으세요. ' 어떻게 보이는지 추측 할 수 없습니다. 제대로 표현하지 않는 한 좋아합니다.
- @nir-' 항상 실제 예제 데이터를 포함하는 것이 가장 좋습니다. 변환 된 데이터는 일반적으로 잘못된 솔루션으로 이어지기 때문에 일반적으로 답변 '의 시간을 낭비합니다.
- 맞아요, 다음 번에 양식을 작성합니다.