2014-09-08 2 views
0

내용에 "일부 문자열 사용자 입력"이 포함 된 txt 및 html 파일을 찾으려고합니다.Ruby, 파일 확장명을 grep하고 문자열에 대한 파일 내용을 검색하는 백틱 사용

명령 줄에서 다음 명령은 완벽하게 작동합니다.

grep -ri --include \*.txt --include \*.html string . 

하지만 다음과 같은 루비 프로그램으로 코딩 할 때 :

s = ARGV[0] 
files = %x(grep -ri --include \*.txt --include \*.html #{s} .) 

를이 내가 내 프로그램

$ 루비 app.rb 문자열을 실행하는 방법입니다

작동하지 않습니다.

그런 식으로 작동시키는 방법에 대한 아이디어가 있으십니까? 쉘에 전송 된 텍스트가 grep -ri --include *.txt --include *.html filename . 그래서

답변

1

\이 필요하지 않습니다 루비에 *탈출 미리

덕분에 탈출한다. 그 쉘은 얻을 수 있도록 백 슬래시 탈출 그것을 그대로 :

files = %x(grep -ri --include \\*.txt --include \\*.html #{s} .) 
+0

위대한 !! 효과가있었습니다. 당신이 말한 것과 똑같은 탈출구를 보였습니다. 고마워요 – fizz

0
#!/bin/env ruby 
# encoding: utf-8 
s = ARGV[0] 
files = %x|grep -ri --include \*.txt --include \*.html #{s} .| 
puts files 
당신이 사용할 수

| 대신

+0

그게 문장으로 작동하지만 내가 전에 이런 식으로 넣어야 할 내 문제를 해결할 것입니다 : (- 포함 \\ *. txt --include \\ * .html) 그냥 @Amadan이 말했다. 도움을 주셔서 감사합니다. – fizz