2013-11-27 17 views
2

Использование bash Мне было интересно, как я могу найти все экземпляры слова, которое начинается с текста, сохраняет его как переменную и распечатывает.Найти все экземпляры слова, встречающиеся в файле

Например, если это был мой файл

test.conf

$temp_test 
test 
$1234_$temp 
$temp_234 

Мой выход будет выглядеть следующим образом:

$temp_test 
    $temp_234 

Может кто-нибудь сказать мне, как это могло бы быть возможным ? Это самое близкое, что я мог донести до сих пор.

while read NAME 
do 
    echo "$NAME" 
done < test.conf 

ответ

4

Вы можете просто использовать Grep с правом регулярного выражения:

grep '^ *$temp' test.conf 
$temp_test 
$temp_234 

UPDATE: По комментариям:

while read -r l; do 
    echo "$l" 
done < <(sed -n '/^ *$temp_/s/^ *\$temp_//p' t.conf) 

test 
234 
+0

мне нужно хранить переменные, а не просто напечатать его каждый потому что я хочу манипулировать переменной. Есть ли способ сделать какой-то цикл, где я добавляю его в переменную и эхо его? Хранение его в переменной позволит мне манипулировать им, в моем случае, захватить все, что есть после $ temp_, а также сохранить это в переменной. –

+1

Уверен, что вы можете закодировать вывод grep следующим образом: ** 'while read -r l; do echo "$ l"; done <<(grep '^ * $ temp' t.conf) '** – anubhava

+0

Или см. мой обновленный ответ. – anubhava

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