2013-01-18 4 views
1

표준 입력 파일을 읽고, 표준 입력을 편집하고, 출력을 다른 파일에 쓰는 데 문제가 있습니다. 그래서, 쉘은 다음과 같은 명령을 실행한다 :쉘 스크립트의 표준 입력 파일 편집하기

./shellName <inputFile> outputFile 

그래서 난 이렇게 내 껍질을 쓰기 :

read INPUT 
tr '[:upper:]' '[:lower:]' INPUT 
grep "<td>" INPUT | sed -r 's/<td>([^<]*)<\/td>/\1/g' #to search all line that contain <td> and delete <td> and <\/td> 
echo $INPUT 

후, 난 그냥 명령 읽기 표준 입력 라인으로 읽을 것을 실현 선. 코드 자체가 작동하지 않았습니다. 모든 대문자를 소문자로 변경하려고 시도한 다음 포함 된 행에서 </td>를 삭제했습니다. 어떻게해야합니까? 임시 파일을 만들어야 할 경우 어떻게 임시 파일을 만들 수 있습니까?

답변

1

실제로 생각보다 쉽습니다. 기본적으로 tr은 stdin (fd 0)에서 읽습니다. 스크립트의 명령은 리디렉션하지 않으면 스크립트에서 "상속"됩니다. 그래서 뭔가

#!/bin/sh 
tr '[:upper:]' '[:lower:]' | sed -E 's/<td>([^<]*)<\/td>/\1/g' 

처럼 나는 나의 플랫폼에서 필요로 -E하는 -r 변경되었습니다.

+0

와우. 너. 그것은 작동합니다! btw는 무엇입니까? 위의 페이지에서 찾을 수 없음 – user1988385

+0

OS X에서는 확장 정규 표현식을 사용하는 옵션입니다. 리눅스에서 사용했던 -r과 동등합니다 (방금 내 리눅스 상자를 확인했습니다). – DrC

+0

괜찮아. 고마워 – user1988385