2016-10-07 3 views
0

쉘 스크립트의 루프에서 접미사를 문자열에 연결하려고하지만 그 결과로 혼란 스럽습니다. 다음과 같이 쉘 스크립트는 다음과 같습니다쉘 스크립트의 루프에서 문자열 연결

for i in `cat IMAGElist.txt` 
do 
    echo $i 
    echo ${i}_NDVI 
done 

결과는 다음과 같습니다

LT51240392010131BKT01 
_NDVI40392010131BKT01 
LT51240392010163BKT01 
_NDVI40392010163BKT01 
... 

전면 다섯 개 문자가 "_NDVI"로 대체되었습니다. 그러나 예상 된 결과가되어야한다 :

LT51240392010131BKT01 
LT51240392010131BKT01_NDVI 
LT51240392010163BKT01 
LT51240392010163BKT01_NDVI 
... 

나는 루프하지 않을 경우 문자열 연결 방법이 옳다고 생각합니다. 나는 왜이 결과가 만들어 지는지 모른다.

답변

0

파일에 Windows 스타일의 줄 끝 (캐리지 리턴 + 줄 바꿈)이있는 것처럼 보입니다. 따라서 파일을 UNIX 스타일의 줄 끝으로 변환해야합니다. 이를 수행하는 간단한 방법은 dos2unix 도구를 사용하는 것입니다.

텍스트 파일의 라인을 읽을 for를 사용하지 마십시오 : 당신은 AWK 또는 sed와 같은 텍스트를 처리하도록 설계 툴,보다 효율적으로이 결과를 얻을 수 있습니다

while read -r line 
do 
    echo "$line" 
    echo "${line}_NDVI" 
done < IMAGElist.txt 

참고.

+0

답변 해 주셔서 감사합니다. 귀하의 접근 방식을 시도했지만 그 결과는 원본과 동일합니다. –

+0

문제는 아마도 입력 파일의 줄 끝과 함께 있다고 생각합니다. 내 대답을 추가했습니다. –

+0

고마워요! 당신 말이 맞아요! –