2015-07-18 2 views
1

Я пытаюсь заменить второй экземпляр строки FooBarr в файле со значением в переменной $ myVar. AWK, похоже, не анализирует переменную. Кто-нибудь знает, что я делаю неправильно здесь, пожалуйста, или у вас есть лучший путь вперед, пожалуйста?Как заменить второй экземпляр строки на awk/sed

awk '/FooBarr /{c++;if(c==2){sub("FooBarr ",$myVar);c=0}}1' myFile 

ответ

2

Вы должны использовать -v var=value синтаксис передать значение для AWK и использовать эту логику немного по-другому:

awk -v myVar="$myVar" '/FooBarr /{c++} c==2{sub("FooBarr ", myVar); c=0} 1' myFile 

Или лучше пройти в перспективе поиска из командной строки, а также:

awk -v s='FooBarr ' -v myVar="$myVar" '$0~s{c++} c==2{sub(s, myVar); c=0} 1' myFile 
Смежные вопросы