2015-08-13 3 views
0

У меня есть большая/etc/group. Все GID между 100 - 999 Я хочу изменить их, добавив 9 к началу и всем другим идентификаторам группы, которые я хочу оставить в покое. Пример.Как изменить группу идентификаторов групп в Linux

group1:x:12: 
group2:x:123: 
group3:x:234: 
group4:x:678: 
group5:x:1234: 

Должно стать.

group1:x:12: 
group2:x:9123: 
group3:x:9234: 
group4:x:9678: 
group5:x:1234: 

Я пытался сделать это с помощью awk и sed, но некоторые вещи мне не поняли, как это сделать. Пожалуйста помоги. Спасибо.

+1

что-то вроде 'СЭД 'ы /: (\ d \ d \ d):/9 \ 1 /'/etc/group> group.new' – bishop

+1

Если вы попытаетесь это сделать, и вы не знаете ** точно **, что вы делаете, я думаю, что у вас будет плохое время: https: //unix.stackexchange .com/questions/33844/change-gid-of-a-specific-group –

+0

Епископ - Спасибо за сообщение. Когда я запустил ваш код, я получил следующее: 'code' sed: -e выражение # 1, char 17: неверная ссылка \ 1 on' s 'команда RHS --- Возможно, я испортил это. Не знаете, как это сделать. – Mike

ответ

1
$ awk 'BEGIN{FS=OFS=":"} $3>=100 && $3<=999 {$3="9"$3} 1' file 
group1:x:12: 
group2:x:9123: 
group3:x:9234: 
group4:x:9678: 
group5:x:1234: 
+0

Спасибо! Отлично! – Mike

1

С GNU СЭД:

sed -r 's/:([0-9]{3}:[^:]*$)/:9\1/' file 

Выход:

 
group1:x:12: 
group2:x:9123: 
group3:x:9234: 
group4:x:9678: 
group5:x:1234: 
+0

И спасибо! Также отлично работает! – Mike

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