몇 가지 스크립트를 작성 중인데 몇 가지 명령을 발견했습니다. 기존 텍스트 내의 특정 위치에 일부 문자열(월)을 넣고 싶습니다. 예:
Left Right
왼쪽과 오른쪽 사이에 텍스트를 넣는 방법은 무엇입니까? 인쇄를 시도했지만 원하는 대로 인쇄되지 않습니다.
date +'%b' | awk '{print "Left " $1} {print "Right"}'
추가하고 싶지 않은 새 행이 추가됩니다.
Left Jun
Right
답변1
date "+Left %b Right"
date
명령 자체의 적절한 위치 에 문자열을 넣을 수 있습니다 . 운영 체제 전체에서 확인되지는 않았지만 GNU date
.
답변2
print
이는 명령이 awk
기본적으로 개행 문자를 삽입하기 때문입니다 . print
한 번의 호출 만 사용하여 전체 내용을 한 번에 인쇄할 수 있습니다 .
$ date +'%b' | awk '{print "Left " $1 " Right"}'
Left Jun Right
또는 다음을 사용하십시오 printf
.
$ date +'%b' | awk '{printf "Left "; printf "%s", $1; printf " Right\n"}'
Left Jun Right
여기에서 사용하는 것은 의미가 없습니다 printf
. 단지 예제로 사용하고 \n
기본적으로 a를 추가하지 않는다는 것을 보여주기 위한 것입니다.
답변3
귀하의 awk
라인에는 실제로 두 개의 별도 문이 있습니다. 여기 손으로 쓴 거야.
date +'%b' | awk '
{print "Left " $1}
{print "Right"}
'
모든 입력 줄에 대해 모든 awk
명령문이 평가되고 실행됩니다. 이 두 문 앞에는 선택적 표현식이 나오지 않습니다(예: $1 == "apple" { print "I love fruit" }
항상 실행됩니다.
따라서 각 입력 행(명령의 단일 행 date
)에 대해 get 을 수행 {print "Left " $1}
한 다음 get 을 수행 합니다 {print "Right}
. 이 print
명령문은 현재 값으로 출력을 종료합니다.출력 레코드 구분 기호( ORS
변수)는 기본적으로 줄바꿈(NL)이므로 두 줄의 출력을 얻습니다.
대안으로, 하나의 awk
명령문만 있고 하나의 print
명령문만 포함하는 이를 사용할 수 있으므로 종료 NL은 하나만 있습니다.
`date +'%b' | awk '{ print "Left", $1, "Right" }'