2014-01-17 2 views
0

내가하고 싶은 일은 파일에 여러 줄이 있는지 확인하기 위해 Ruby oneliner를 만드는 것입니다. 다른 방법으로 발견되면 0 반환 코드를 반환하십시오. 1.Ruby oneliner가 파일에 여러 줄이 있는지 확인합니다.

예를 들어 다음 내용으로/tmp/foo라는 파일이있는 경우. 검색 문자열 인 경우 검색 문자열이 내가 찾은 1.

'이 \ 네 \ 하나는'그것은 반환 경우

one 
two 
three 
four 
five 
six 
seven 

'하나 \ ntwo \ nthree'다음은 0 을 반환 다음과 같은 예제 온라인 온라인 검색/대체 및 검색/인쇄를 중심으로합니다. 나는 내가 원하는 것을하기 위해 그것을 어떻게 마사지할지 모르겠습니다.

ruby -i -e 'puts gets(nil).gsub(/${line}/,\"\")' ${file} 
ruby -ne 'print -f ~/<regex>/' <file> 

답변

2

여기 하나의 방법 주셔서 감사합니다.

ruby -e "exit(gets(nil) =~ %r{${line}} ? 0 : 1)" ${file} 

예 전화 : 명령 줄에서

[email protected] ~ $ cat sample 
one 
two 
three 
four 
five 
[email protected] ~ $ ruby -e 'exit(gets(nil) =~ %r{one\ntwo\nthree} ? 0 : 1)' sample ; echo $? 
0 
[email protected] ~ $ ruby -e 'exit(gets(nil) =~ %r{one\ntwo\nfour} ? 0 : 1)' sample ; echo $? 
1 
0
File.read(filename).include?("one\ntwo\nthree") ? 0 : 1 

doc = <<END 
one 
two 
three 
four 
five 
six 
seven 
END 

filename = 'data' 
File.write(filename, doc) 

File.read(filename).include?("one\ntwo\nthree") ? 0 : 1 # => 0 
File.read(filename).include?("one\ntwo\nfour") ? 0 : 1 # => 1 

:

ruby -e 'File.read("data").include?("one\ntwo\nthree") ? 0 : 1' # => 0 
짧은있을 수 있습니다
관련 문제