2012-04-27 3 views
0

다음 예에서 "5"값을 읽으면 파일 인쇄 5 부를 발행 할 수 있습니까?php 또는 쉘 스크립트에서 사본 인쇄를위한 행의 값 읽기

예를 들어, 내 출력은 아래 코드와 유사합니다.

 

Order: 101 
Guest: Raj 
Phone: xxx-xxx-xxxx 

5 x Bananas 
5 x Grapes 
5 x Apples 

위의 파일에서 값 5를 읽는 방법은 다음과 같습니다. 변수에 5를 얻는 방법이 있다면, lpr 명령에서 사용할 수 있습니다.

LPR 경우 output.txt - #

나는 이런 식으로 뭔가 할 것

답변

0

: 당신이 원하는 모든 고유 ##를 찾을 경우

sed -n '/^[0-9]\+ x [A-Za-z]\+/ { s/^\([0-9]\+\) x \([A-Za-z]\+\)/\1 \2/; p }' file | 
while read num fruit; do 
    echo $num $fruit 
    # do whatever with lpr 
done 

편집

## x Something과 같은 문자열이있는 경우 다음을 사용할 수 있습니다.

sed -n '/^[0-9]\+ x [A-Za-z]\+/ { s/^\([0-9]\+\) x.*/\1/; p }' file | uniq 

당신이 변수에 그 캡처하려면 (10)는, 사용

var="$(sed -n '/^[0-9]\+ x [A-Za-z]\+/ { s/^\([0-9]\+\) x.*/\1/; p }' file | uniq)" 
+0

그것은 5 번이나 여러 번 인쇄됩니다. 한 번만 인쇄 할 수 있습니까? –

+0

@ RajK 내가 원하는대로 혼란스러워. 파일에서 첫 번째 '5'를 찾아서 인쇄하고 싶습니까? 그렇다면 5 번을 사용하지 않는 이유는 무엇입니까? 나는 당신이 원했던 것이 '## x Something'처럼 보이는 모든 줄을 찾아서 찾은 번호를 출력하는 것이라고 생각했습니다. 그것이 당신이 원하는 것이 아니라면, 당신의 질문을 명확히 할 수 있습니까? –

+0

혼란스럽게 생각합니다. 나열된 출력은 다른 프로그램에서 생성되어 파일에 저장됩니다. 이제 파일에서 위의 예와 같이 "x"기호 앞에있는 숫자를 읽고 쉘 스크립트에서 lpr과 함께 사용할 변수에 저장하려고합니다. 이게 말이 돼...? –

0

이 도움이 될 것입니다.

egrep '[0-9]+' test | cut -f 1 -d " " | uniq 
+0

이것은 샘플 입력이 항상 파일의 맨 아래에 있다고 가정합니다. 꼬리 대신'egrep '[0-9] +''를 사용하는 것이 더 나을 것입니다. 이는 [고양이의 쓸모없는 사용] (http://partmaps.org/era/unix/award.html#cat)의 예이기도합니다. 대신'cut -f 1 -d ""filename "을 호출 할 수 있습니다. –

+0

변경되었습니다. 감사 – ganesshkumar