awk 명령을 사용하여 줄을 삽입하면 종료되지 않은 문자열 오류가 발생합니다.
입력 파일은 다음과 같습니다
date mean rms bias
..... ..... .... .......
..... ..... ........ .........
...... ........ ....... .......
여기에 날짜, 평균, rms 및 편차에 대한 새 값을 삽입해야 합니다.
내 스크립트는 다음과 같습니다
echo $PDY $mean $rms $bias
awk '/Date/ { print; print "'$PDY' \t'$mean' \t'$rms' \t'$bias'"; next }1' file.txt
터미널 로그는 다음과 같습니다
+ echo 20180131 76.196 578.177 903.000
20180131 76.196 578.177 903.000
+ awk '/Date/ { print; print "20180131 \t' '76.196 \t578.177 \t903.000"; next }1' file.txt
awk: /Date/ { print; print "20180131 \t
awk: ^ unterminated string
print; print "20180131 \t
awk 명령 뒤에 " "(공백/공백)이 있습니다. 왜 나오는지 모르겠어
해결책을 알려주십시오.
답변1
문자열은 '
두 번째 문자열로 시작하고 끝납니다 '
.
awk '/Date/ { print; print "20180131 \t'
오류 메시지의 종료되지 않은 문자열은 입니다 "20180131 \t
.
대신 "
내부적으로 사용하고 이스케이프하세요."
\"
awk "/Date/ { print; print \"20180131 \t' '76.196 \t578.177 \t903.000\"; next }1" file.txt
답변2
이 오류 메시지는 awk
따옴표 사용 방식이 마음에 들지 않는다는 의미입니다. 귀하의 진술을 살펴보면서 awk
먼저 인쇄 진술에서 작은따옴표를 자주 사용했다는 점을 지적하고 싶습니다. awk
다음 작은따옴표는 \t
전체 프로그램의 끝을 표시하는 것으로 해석되며 awk
(키워드 다음에 작은따옴표로 시작함 ), 이 시점에서 인쇄 명령에는 닫는 큰따옴표(또는 사용자가 말할 수 awk
있는 닫는 중괄호)가 없습니다 .awk
프로그램에 변수를 전달하는 더 쉬운 방법은 awk
명령줄 인수를 사용하는 것입니다 -V
. awk -V pdy="$PDY" -V mean="$mean", and then use
pdy는 awk` 변수를 and
나타냅니다 . as native
이 접근 방식을 사용하면 대부분의 참조가 필요하지 않습니다.