2017-02-15 3 views
1

linux 명령을 사용하여 "a.txt"파일을 생성 중입니다. 이제 "a.txt"파일의 첫 번째 단어를 읽고 "b.txt"라는 기존 파일을 업데이트해야합니다. 내가 b.txt에 "/ 채우기"라는 단어를 검색하고 a.txt이 아래에서 읽은 단어로 교체 할 것은 리눅스 명령의 도움으로 코드요리사를 사용하여 다른 파일에서 입력을 읽은 후 파일을 업데이트하는 방법?

bash 'example' do 

code <<-EOH 
cat ex.txt >> a.txt 
    EOH 
end 

test = /#{'cat /a.txt'}/ 
file_names = ['/b.txt'] 

file_names.each do |file_name| 
    text = File.read(file_name) 
    new_contents = text.gsub(/fill, test) 
    puts new_contents 
    File.open(file_name, "w") {|file| file.puts new_contents } 
  1. 에게있다 "고양이 ex.txt> > a.txt "ex.txt의 내용을 a.txt에 저장합니다.
  2. 다음은 test =/# { 'cat /a.txt'}/와 함께 a.txt 파일을 읽고 싶습니다. 예 a.txt에 "azure"단어가 포함되어 있음
  3. b.txt에 단어 "/ fill"을 검색하고 b.txt 파일에서 2 단계에서 읽은 내용으로 바꿉니다. azure
  4. 대신 문제는 azure로 교체/채우기,/fill은 cat /a.txt로 대체됩니다. 지금

당신이 실제로 무엇을 달성하고자, 여기

+0

아니 우리가 도울 수없는 이유 당신의 경우에'template'와'file' 리소스가 작동하지 않는가? bash 코드에 의존하는 것은 보통의 멱등 원립 프리미티브가 적합하지 않을 때 최후의 수단이되어야한다. [XY 문제] (http : // meta. stackexchange.com/questions/66377/what-is-the-xy-problem), 당신이 정말로 후 무엇을 설명하고 우리는 접근 방법을 도울 수 있습니다. – Tensibai

+0

@Tensibai 그것은 ex.txt가 동적으로 생성되기 때문에 나는 목표는 동적으로 생성 된 ex.txt 및 replac 파일의 내용을 읽는 것입니다. 특정 단어 검색을 기반으로 한 b.txt 파일의 내용 내가 내 포인트를 만들었 으면 좋겠다 – Dave

+0

템플릿이 b.txt에 적합하지 않은 이유와 왜이 ex.txt에 의존해야하는지, 왜 당신이 무엇을하고 있는지 정의하지 않았는가? 전체. – Tensibai

답변

1

따라하기 조금 어렵다 도와주세요 수의 명확한를 바랍니다. 코드에 몇 가지 문제가 있습니다. 일반 조언 : 그건 당신이 완전히 요리사에 의해 관리되지 않는 파일을 편집 할 경우

  • 사용 Chef::Util::FileEdit, (더 영감을 this question를 참조 요리사의 융합 단계에서 실행되도록
    • ruby_block 자원 내부에 루비 코드를 삽입)).
    • 요리사를 사용하여 전체 파일을 쓰고 싶다면 file 리소스를 사용하고 File.read을 사용하여 읽은 내용을 토대로 content을 지정하십시오.
    • 마찬가지로, ruby_block 외부의 루비 코드는 컴파일 단계 (which precedes the convergence phase)에서 실행됩니다. 당신이 소스 파일이 아직 없기 때문에, 당신이 게으른 평가에 대한 lazy 블록을 사용할 수 있습니다 (너무 일찍 경우 : 절대적으로 카운터 생산성 소리

      file "b.txt" do 
          content lazy { File.read .. } 
      end 
      
  • +0

    . 나는 요구 사항을 다시 언급했다. 여기에서 도와주세요 – Dave

    +0

    매우 어렵습니다. @Tenisbai는 "적어도 요리사가 원한다"고 느끼지 않는 해결책을 염두에 두지 않고 실제로하고 싶은 것을 설명하는 것이 합리적이라고 말했다. – StephenKing