파일의 총 레코드 수에서 UNIX 스크립트의 1을 뺀 값을 표시하려면 매개변수로 전달하세요.

파일의 총 레코드 수에서 UNIX 스크립트의 1을 뺀 값을 표시하려면 매개변수로 전달하세요.

입력은 다음 형식으로 제공됩니다.

ksh -x count.sh filename `cat filepath/filename | wc -l

여기서 문제는 두 번째 매개변수 cat을 다른 변수에 전달하고 실행해야 한다는 것입니다 expr -1.

내 요구 사항은 명령 자체의 개수를 계산하여 스크립트에 전달해야 한다는 것입니다.

실제로 계산되는 총 레코드 수는 1보다 작아야 합니다. 헤더 레코드도 삭제해야 합니다.

답변1

파일의 총 레코드 수를 하나씩 줄이는 가장 간단한 방법은 다음과 같습니다 awk.

awk 'END { print NR - 1 }' filename

NRNR이것은 지금까지 읽은 레코드 수를 보유하는 내부 변수인 음수 값을 인쇄합니다 . 이는 입력이 끝날 때 수행되며 파일의 총 레코드 수에서 1을 뺀 값이 제공됩니다.

그러면 명령은 다음과 같이 작성될 수 있습니다.

ksh -x count.sh filename "$( awk 'END { print NR - 1 }' filename )"

관련 정보