2014-03-04 2 views
0

누구나 -d< $< 사이의 문자가 다음 makefile 명령에서 무엇을 설명 할 수 있습니까?파일 명령 만들기

tr -d "\`[email protected]#$%^&*=+<>{}[]|/'" < $< | ./$(ANSWER) $(STOPWORDS) | sort > [email protected] 

여기서 STOPWORDS는 단어가있는 파일이고 ANSWER는 실행 파일입니다.

답변

2

tr 문자를 변환하거나 삭제합니다.

제공의 글자 SET1을 삭제할 것 -d tr을 알려줍니다 전달

"`~ @ # $으로의 %^& * = + <> {} [] |/'"문자의 집합이다 삭제할 수 있습니다.

<

$< 첫 번째 전제 조건의 이름을 식별하는 one of the automatic make variablesshell redirection 문자 그래서 당신은 주어진의 첫 번째 전제 조건에서 발견되는 특정 세트에서 모든 문자를 삭제하고

규칙을 만들어라. 여기

은 간단한 예제 -

메이크 :

all:text.txt 
tr -d "\`[email protected]#$%^&*=+<>{}[]|/'" < $< 

지금이 text.txt 파일 제공 :

$ cat text.txt 
huio7&*(njkvlsan7u#%$&*(FHhnjkl 

는 메이크업 파일을 실행하고 볼을 :

$ make 
tr -d "\`[email protected]#^&*=+<>{}[]|/'" < text.txt 
huio7(njkvlsan7u%$(FHhnjkl 

&, *#이 모두 누락되었습니다.

수직 막대 |pipe character이며 첫 번째 명령의 출력을 받아 다음 명령으로 보냅니다.


당신은 $%이 제거되지 않은 이유를 취급 특별하게 일부 문자가 있기 때문에, 대답은 물었다.명령의 실제 출력에서보세요 :

$ make 
tr -d "\`[email protected]#^&*=+<>{}[]|/'" < text.txt 

make 실제로 $와 이스케이프 문자 (백 슬래시)를 가지고 있지 않은 %make 때문에 인정 특수 문자가 포함되지 않은 실행 한 라인 그들.

새로운 메이크 :

$ make 
tr -d "\`[email protected]#\%^&*=+<>{}[]|/'" < stupid_text.txt 
huio7(njkvlsan7u$(FHhnjkl 

%가 메이크업 출력에 나타나서 문자열이 지금 얼마나 참조 :

all:text.txt 
tr -d "\`[email protected]#$\%^&*=+<>{}[]|/'" < $< 

지금 우리가 보는이 명령을 실행 예,의는 % 탈출하자 %을 삭제 했습니까?

3

tr 명령은 $<으로 지정된 파일에서 나열된 모든 문자 (큰 따옴표 제외) ("\`[email protected]#$%^&*=+<>{}[]|/'")를 삭제합니다 (-d). 출력은 answer/stopwords 명령으로 이동하고 해당 출력은 출력 파일로 정렬됩니다.

실제로는 $<[email protected]make 인 것을 제외하고는 make과 거의 관련이 없습니다.