2012-02-18 3 views
16

나는 awk을 사용하는 법을 배우려하지만, 예상 한대로 작동하지 않습니다. 여기 내 문제가 있습니다 :awk가 첫 번째 필드 대신 전체 행을 인쇄하는 이유는 무엇입니까?

나는 이것이 첫 번째 필드이기 때문에 "Hello"를 볼 것으로 예상됩니다. 공백이 필드 구분 기호로 간주되는 이유는 무엇입니까?

+4

그래서 Awk 프로그래밍보다 쉘 프로그래밍에 대해 더 많이 배웠습니다. 지금까지의 답변들이 그 자리에 있습니다. 스크립트를 중심으로 항상 작은 따옴표를 사용하십시오. 그렇지 않으면 매우 다른 이유가 있습니다. –

답변

26

Bash가 첫 번째 셸 인수를 참조하여 $1을 해석 중이므로이 값을 바꿉니다. 귀하의 경우 해당 매개 변수가 설정되어 있지 않으므로 $1은 빈 문자열로 바뀝니다. 따라서 AWK 프로그램은 실제로는 전체 행을 인쇄하는 {print }입니다.

echo "Hello brave new world" | awk '{print $1}' 

또는

AWK 프로그램 주위
echo 'Hello brave new world' | awk '{print $1}' 
7
echo "Hello brave new world" | awk '{print $1}' 

사용 따옴표 :

이 일에서 강타를 방지하기 위해 작은 따옴표 대신 큰 따옴표에 AWK 프로그램을 포장 그렇지 않으면 $ 1이 쉘 변수 $ 1로 번역됩니다.

관련 문제