2015-06-02 6 views
0

У меня есть Баш скрипт, и я хочу использовать его для замены некоторых линий с помощью строки и добавить дату до конца строки:Как заменить строку, содержащую переменные?

#! /bin/bash 

today=`date '+%Y_%m_%d__%H_%M_%S'`; 

sed -i '3s/.*/CONFIG_LOCALVERSION=/' ~/Desktop/file1 file2 ... 

Кроме того, я могу сделать это для целого ряда файлов, начните с строки типа «файл»?

ответ

0

Чтобы использовать переменное расширение в bash, переменные должны быть не кавычками или двойными кавычками. Одиночные кавычки будут препятствовать расширению. С другой стороны, вы бы хотели избежать расширения * в 3s/.*/, если у вас есть каталог 3s содержащий файлы, начинающиеся с ..

К счастью, вы можете просто цепные строки вместе, так что вы можете сделать

#!/bin/bash 

today=$(date '+%Y_%m_%d__%H_%M_%S'); 

sed -i '3s/.*/CONFIG_LOCALVERSION='"$today"'/' ~/Desktop/file{1,2,Foo} 

и я могу это сделать для диапазона файлов, которые начинаются со строки, как «файл»?

~/Desktop/file{1,2,Foo} будет расширяться ~/Desktop/file1 ~/Desktop/file2 ~/Desktop/fileFoo. Если вместо этого вы хотите сопоставить все файлы на рабочем столе с именем, начинающимся с «файла», вместо этого используйте ~/Desktop/file*.

+0

Большое вам спасибо;) –

+0

thx, что, если я хочу найти строку в некоторых файлах и заменить нужную строку? –

+0

Можете ли вы уточнить? –

Смежные вопросы