2015-05-25 2 views
2

В настоящее время у меня есть эта строка кода, которая должна быть увеличена за один раз при запуске этого скрипта. Я хотел бы использовать awk для увеличения третьей строки (570).Закрытие одной котировки в Awk

'set t 570' 

У меня есть это, чтобы изменить код, однако мне не хватает закрывающейся кавычки. Я также хотел бы, чтобы это только воздействовало на эту конкретную (выше) строку, однако я не уверен, где разместить синтаксис, который awk использует для этого.

awk '/set t /{$3+=1} 1' file.gs >file.tmp && mv file.tmp file.gs 

Большое спасибо за ваш ввод.

ответ

3

Использование sub() выполнить замену на саму строку:

$ awk '/set t/ {sub($3+0,$3+1,$3)} 1' file 
'set t 571' 

Это выглядит для значения в $3 и заменяет его с собой +1. Для того, чтобы избежать замены всех $3 и убедившись, что котировка сохраняется в строке, мы говорим $3+0 так, что он оценивает только количество, а не цитата:

$ echo "'set t 570'" | awk '{print $3}' 
570' 
$ echo "'set t 570'" | awk '{print $3+0}' 
570 

Примечание это будет ошибкой, если значение в $3 происходит более раз в той же строке, так как он заменит их все.

+0

Спасибо, работал безупречно. – hallettwx