2010-10-10 2 views

ответ

1

Что-то вроде этого:

for file in *.txt 
do 
    cp $file $file.tmp 
    cat $file.tmp | sed 's/foo/bar/g' > $file 
done 
+1

Вы можете использовать '-i' для редактирования файлов на месте, поэтому нет необходимости в временном файле или в цикле. – poke

1

Вы также можете использовать Perl:

perl -pi -e 's/find/replace/g' *.txt 
1

Just Баш

for file in *.txt 
do 
    while read -r line 
    do 
    case "$line" in 
     "*pattern*") line="${line//pattern/new}";; 
    esac 
    echo "$line" 
    done <"$file" > t 
    mv t "$file" 
done 
Смежные вопросы