2012-03-17 3 views
1

이 문제를 도와주세요.AWK - 'printf, print'명령 'printf'의 두 명령 대체?

awk 'BEGIN {printf "%-15s", "Date of birth:" > "/dev/stderr"; getline var; print "Today finished:", var ,"days"}' 

가 어떻게 '의 printf'첫 번째 명령 'var에'를 인쇄하는 방법 :

내가이 명령을? 두 번째 명령 'print'를 제거 할 수 있습니까?

도움 주셔서 감사합니다.

편집-1 :

대답 위한 매트

첫 번째 예는 좋지만, 다음 줄에 인쇄 'VAR'. 'var'를 같은 줄에 인쇄 할 수 있습니까?

편집-2 :

대답 에 대한 Peter.O

는 당신의 도움을 주셔서 감사합니다. 정확히 요점. 데이터는 추후 계산에 사용됩니다. 계산 결과는 같은 줄에 인쇄됩니다. 예 :

Date of birth: 2011-02-23 Today finished: 2011-02-23 days 

편집-3 :

대답 shellter 에 대한

는 구경에게 감사 나는 결과를 얻기 위해 원하는

awk 'BEGIN {printf "%-15s", "Date of birth:" > "/dev/stderr"; getline var; print "Today finished:", var ,"days"}'` 

r 귀하의 의견.

+0

왜?당신이 첫 번째 예제에서 무엇을 가지고 있었습니까? – Mat

+0

첫 번째 예제는 좋지만 다음 행에 'var'을 인쇄합니다. 'var'를 같은 줄에 인쇄 할 수 있습니까? – Tedee12345

+0

사용자가 방금 같은 줄에 같은 값을 입력했을 때 * awk *가 같은 행에 * var *을 인쇄하도록 실제로 하시겠습니까? ... 그리고 왜 프롬프트가'Enter the date :'뒤에 많은 공백이 있습니까? 사용자가 날짜를 입력하기를 원하는 곳입니까? ** 완성 된 라인이 어떻게 보이는지에 대한 실제 예를 보여 주면 도움이 될 것입니다. 왜냐하면 현재로서는 혼란스럽고 나에게 그것은 당신이 다음과 같이 보이기를 바라는 것처럼 보입니다.'날짜 입력 : 2012-03-17 2012-03-17' ... –

답변

1

예제 코드에서 printf을 stderr로 리디렉션했습니다. 나는 당신이 "Enter the date:"을 최종 출력 (stdout)으로 추가 처리 할 것을 원하지 않기 때문이라고 가정합니다 ... 그것은 효과가 있으며 원하지 않는 텍스트를 삭제하는 깨끗한 방법입니다. 당신이 당신의 포맷 출력을 원한다면

:
Date of birth: 2011-02-23 Today finished: 2011-02-23 days
표준 출력 (stdout)에 갈은 다음 질문에 대한 답은 간단하다 : 당신은 확실히 표준 출력에 관한 것이다 print/printf의 다른 인스턴스를 호출 할 필요가 .

print/printf에는 의 개념이 없으므로 출력은입니다. 그냥 인쇄 ... 리디렉션 연산자 >내부의 작업 (print)과 아무런 관련이 없으므로 print (f)를 한 번 호출하여 일부 출력을 stderr으로 보낼 수없고 나머지는 stdout입니다.

+0

설명해 주셔서 감사합니다. 이제 관리 할 수 ​​있습니다. 나는 그런 질문을한다. 내가 좋은 반응을 얻었 음을 어떻게 확인합니까? – Tedee12345

+0

각 대답의 왼쪽 위에 위의 화살촉이 있고 그 아래에는 다른 숫자가 있습니다. 답변을 유용하고 유용하게 표시하려면 위 화살표를 클릭하십시오. 이것은 번호를 증가시킵니다. 답을 나쁜 것으로 표시하려면 아래쪽 화살표를 클릭하여 카운터를 감소시킵니다. 질문 자 (당신)도 다른 옵션을 가지고 있습니다. 하단 화살표 아래 큰 눈금을 클릭하여 ** 최고 ** 답변을 수락하십시오. 이것은 일반적으로 질문자가 하나 이상의 답변을 위/아래로 표시 할 수 있음을 의미하며, 더 나은 답변을 표시 할 수있는 시간을 허용 한 후에는 ** 가장 좋은 ** 답변을 표시하십시오. –