쉘에서 while 루프를 사용하여 한 파일을 읽고 다른 파일로 리디렉션하는 방법

쉘에서 while 루프를 사용하여 한 파일을 읽고 다른 파일로 리디렉션하는 방법

unimplemented.txt다음 이름의 파일이 있습니다 .

verify-sdh-t1-satop-traffic-over-mpls-1for1-xxx,./TDM/SDH.xls
verify-sdh-t1-satop-traffic-over-mpls-1plus1-xxx,./TDM/SDH.xls

while 루프를 사용하여 위 파일을 읽고 다음을 /TDM/SDH_check.xls포함하는 출력 파일을 생성하려면 어떻게 해야 합니까?

verify-sdh-t1-satop-traffic-over-mpls-1for1-xxx

이렇게 해봤는데 무한루프에 빠지네요

while IFS="," read dummy casename tpname < "unimplemented.txt"
do
    echo "$casename" > basename $tpname|sed -e 's/\..\+$//'
done

답변1

스크립트에 몇 가지 문제가 있는 것 같습니다.

  1. 너는 왜 read dummy casename tpname? 이 줄에서 읽기는 3개의 필드를 기다리고 있지만 2개의 필드만 필요합니다.

  2. 을 작성하면 echo "$casename" > basename $tpname|sed -e 's/\..\+$//'다음이 수행됩니다.

    1. (대신 ) $casename에 에코됩니다 .basename$basename
    2. sedecho 출력에 대체를 적용하면 됩니다 . 괜찮습니다.
  3. 사용할 >때마다 덮어쓰게 됩니다 echo. 추가하려면 >>.

다음은 나에게 맞는 것 같지만 이것이 원하는 것인지 확실하지 않습니다.

gcolangelo@NEO-L196:/tmp/pouet$ cat unimplemented.txt 
verify-sdh-t1-satop-traffic-over-mpls-1for1-xxx,./TDM/SDH.xls
verify-sdh-t1-satop-traffic-over-mpls-1plus1-xxx,./TDM/SDH.xls
verify-sdh-t2-satop-traffic-over-mpls-1for1-xxx,./TDM/SDG.xls
verify-sdh-t2-satop-traffic-over-mpls-1plus1-xxx,./TDM/SDG.xls
gcolangelo@NEO-L196:/tmp/pouet$ cat unimplemented.txt | while IFS=',' read casename tpname ; do echo "$casename"|sed -e 's/\..\+$//' >> $tpname ; done
gcolangelo@NEO-L196:/tmp/pouet$ cat TDM/SDH.xls 
verify-sdh-t1-satop-traffic-over-mpls-1for1-xxx
verify-sdh-t1-satop-traffic-over-mpls-1plus1-xxx
gcolangelo@NEO-L196:/tmp/pouet$ cat TDM/SDG.xls 
verify-sdh-t2-satop-traffic-over-mpls-1for1-xxx
verify-sdh-t2-satop-traffic-over-mpls-1plus1-xxx

관련 정보