2014-10-09 1 views
0

필자가 작성한 bash 스크립트에 문제가 있습니다. 명령은 SED까지 작동하며, 내가 잘못 수행 한 것을 정말로 확신하지 못합니다. HAL은 대체하려는 텍스트 파일의 변수입니다. 어떤 아이디어?오류 BED 루프에 SED 통합

for i in $(cat LIST.txt) do 
sed s/HAL/i/ <~/test/template.txt > new$i.txt 
done 

주어진 오류는 "예기치 않은 토큰 sed 근처의 구문 오류"입니다. 그런 다음 sed 행을 제공합니다.

+0

'for $ in cat (cat foo.txt)'는 파일의 행을 반복하여 반복 시작하는 잘못된 방법입니다 .BashFAQ # 001 : http://mywiki.wooledge.org/BashFAQ/00을 참조하십시오. 1 –

+0

... "sed"표현에 도달 할 때 어떻게 실패했는지 말하는 것이 아닙니다. 그래서 고정해야 할 것이 무엇인지 알아야합니까? –

+0

... 또한 확장을 인용하십시오 :'> "new $ i.txt"는'> $ i.txt'가 실패한 곳에서 성공할 것입니다. –

답변

0

for 부분과 do 사이에 세미콜론이 누락되어 있다고 생각합니다.

while read i; do 
    # Are you sure you don't want to substitute with the variable (`$i` 
    # in this case) instead of "i" in the line below? 
    sed s/HAL/i/ < ~/test/template.txt > new$i.txt 
done < LIST.txt 

당신은 당신의 sed 라인은 당신이 $i로 대체 할 경우 아래처럼 할 수 있습니다 :

for i in $(cat LIST.txt); do 
    sed s/HAL/i/ <~/test/template.txt > new$i.txt 
done 

이것은 아마도 더 나은 (LIST.txt에서 한 줄에 하나의 단어가있다 가정으로 다시 작성

sed "s/HAL/$i/" < ~/test/template.txt > new$i.txt 
+0

감사합니다. 이것은 완벽하게 작동했습니다. 무리 감사. – George