2014-04-14 2 views
0

지금까지 검색 기준에 따라 파일 내용을 추가하기 위해 유닉스 스크립트 아래에서 시도했습니다. 모든 것이 좋습니다. 하지만 아래의 스크립트를 여러 번 실행하면 perl 명령이 파일에 계속 추가됩니다.검색 기준으로 파일 내용에 문자열을 추가하는 방법

searchArr=(test1 test2 test3) 

replaceArr=(somestring1 somestring2 somestring3) 

a=`echo ${#searchArr[@]}` 
echo $a 
for ((i=0;i<$a;i++)) 
do 
searchValue=`echo ${searchArr[i]}` 
replaceValue=`echo ${replaceArr[i]}` 
for file in `find . -name \* -print`; do 
    grep "$searchValue" $file &> /dev/null 
    if [ $? -ne 0 ]; then 
    echo "Search string not found in $file!" 
    else 
    perl -p -i -e "s/$searchValue/$replaceValue/g" $file 
    echo $file "Replace string Success!" 
    fi 
done 
done 

전류 출력 : - 그것은 그런 식으로 추가 계속 것 이상의 시간을 실행하면

. 예를 들어 두 번 실행하면이 추가됩니다 두 번

somestring1somestring1test1 
somestring2somestring2test2 
somestring3somestring3test3 

필요한 출력 : - 아무리이 나오지도 검색 패턴에

somestring1test1 
somestring2test2 
somestring3test3 

답변

0

추가 단어 경계를 실행 횟수 .

Beginning and end of words in sed and grep

+0

이 문제를 해결할 수 있습니까? 이 perl 명령에 어떻게 적용합니까 ?? –

+0

http://www.regular-expressions.info/wordboundaries.html –

관련 문제