Помогите с дублированием строк на основе поля с помощью awk - PullRequest
1 голос
/ 05 декабря 2010

У меня есть следующий набор данных с 3-м полем состоит из 0 и 1

Input 

1 2 1
2 4 0
3 3 1
4 1 1
5 0 0

Я хочу расширить набор данных до следующего формата

  1. Дублируйте каждую строку на основе 2-го поля и

  2. Заменить только "новые" 1 (получить после дублирования) в 3-м поле на 0

Как я могу сделать это с AWK?

Спасибо

Output 
1 2 1
1 2 0
2 4 0
2 4 0
2 4 0
2 4 0
3 3 1
3 3 0
3 3 0
4 1 1

1 Ответ

2 голосов
/ 05 декабря 2010
awk '{print; $3=0; for (i=1; i<$2; i++) print}' inputfile

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

awk '{if ($2>0) print; $3=0; for (i=1; i<$2; i++) print}' inputfile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...