2014-06-21 6 views
0

있습니다. 가지고있는 파일의 각 줄 끝에 인덱스 변수를 추가하려고합니다. 그러나 나는 textFile에있는 이스케이프 문자를 잃어 버리지 않으므로 파일에 다시 echo 할 수 없습니다. 여기 각 줄 끝에 인덱스 변수를 추가하십시오.

내가 시도 내용은 다음과 같습니다

while read p; do    
       tempCom+=$p 
       tempCom+=$indexVar 
       echo $tempCom >> otherFile.txt    
       tempCom="" 
done < result.txt 

난 후 나는 무엇 : indexVar 다른 곳에 저장되고, 반드시이 추가되는 라인에 해당하지 않는 인덱스입니다

Read: 
"asdasdasdasdasdasd\ asdasd/asda" 
"qweqweqweqweqweqwe\ qweqwe/qweq" 

Output: 
"asdasdasdasdasdasd\ asdasd/asda" 1 
"qweqweqweqweqweqwe\ qweqwe/qweq" 2 

주 에.

+0

indexVar 파일의 작은 샘플을 표시 할 수 있습니까? –

+0

@ G-- 단순히 그 숫자가 변수에 들어간 숫자입니다. – mixkat

답변

1

read 명령의 -r 옵션을 사용하면 백 슬래시가 보존됩니다.

while read -r p; do 
+3

@mixkat이 대답을 받아 들였지만 괜찮습니다.하지만 'IFS ='를 사용하고'tempCom '의 확장을 인용하십시오. –

+0

@gniourf_gniourf 주목! 감사! – mixkat

2

마지막 줄 번호 만 추가하려는 경우 awk을 사용하지 않으시겠습니까?

awk '{print $0, "\t", NR}' < file.txt 

편집 1 : 당신은 나오지도 다음 사용할 수 있습니다 :

sed "s|$|${indexVar}|" input 
당신이 다음 paste을 사용하려는 것처럼 소리

paste file1.txt file2.txt > fileresults.txt 

편집 2 (당신은 그냥 라인으로 라인을 가입하려는 가정)

+0

죄송합니다. 게시물을 편집했는데 이미 언급 했어야했지만 색인은 줄 번호와 일치하지 않습니다. – mixkat

+1

당신의'sed' 해결책은 파일 전체에서'indexVar'가 절대로 변경되지 않고'|'기호를 포함하지 않는다면 작동합니다. –

+0

나는'indexVar'가 어떻게 설정/변경되고 있는지 모르겠습니다. –

3

문제는 인용문 일 가능성이 큽니다. read 문에도 IFS=-r 옵션을 준수하십시오.

while IFS= read -r p 
    tempCom+=$p$indexVar 
    printf '%s\n' "$tempCom" >> otherFile.txt # Observe the quotes 
    tempCom= 
done < result.txt 
관련 문제