Как разрезать части первого поля и остальных полей одним выстрелом? - PullRequest
1 голос
/ 19 октября 2011

Ниже приведен вывод процесса, над которым я работаю.

10/19/2011 14: 11: 52.911728, 15277, 828, 2964, 1, 1

10 /19/2011 14: 11: 53.915060, 34298, 898, 3096, 1, 1

Однако, используя этот вывод, мне нужно генерировать среднее значение для каждой минуты.Таким образом, я пишу программу оболочки, которая просто выводит все это с первым полем, показывающим только часы и минуты, а не секунды и микросекунды.

Интересно, как лучше всего генерировать только часы иминут от первого поля и остальных полей.

Одна мысль, которая приходит мне в голову:

cut -d"," -f2-  source >file1
cut -d"," -f1 source | cut -d":" -f1,2 >file2
paste file2 file1

Но можно ли этого достичь за один выстрел?

1 Ответ

2 голосов
/ 19 октября 2011

Если даты и время имеют фиксированную длину, просто обрезать по столбцу:

$ cut -c1-15,26- < source 
10/19/2011 14:18, 15277, 828, 2964, 1, 1
10/19/2011 14:10, 34298, 898, 3096, 1, 1

Если все, кроме минут, может иметь переменную длину, используйте sed:

$ cat source 
10/19/2011 14:11:52.911728, 15277, 828, 2964, 1, 1
10/19/2011 14:11:53.915060, 34298, 898, 3096, 1, 1
10/19/2011 4:11:53.915060, 34298, 898, 3096, 1, 1
$ sed 's/\([^:]*:..\)[^,]*\(, .*\)/\1\2/' < source
10/19/2011 14:11, 15277, 828, 2964, 1, 1
10/19/2011 14:11, 34298, 898, 3096, 1, 1
10/19/2011 4:11, 34298, 898, 3096, 1, 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...