Разница в выводе GNU и BSD zgrep

Puedes probar con este awk

awk -F, '
function cvtdate( dat,  array) {
    split(dat,array,"/| |:")
    array[4]=array[7]=="PM"?(array[4]+12):array[4]
    return array[3]"-"array[1]"-"array[2]" "array[4]":"array[5]":"array[6]
}
{
    $3=cvtdate($3)
    $6=cvtdate($6)
}1' OFS=',' infile
4
14.07.2019, 18:55
1 ответ

Вы не можете получить аналогичный результат с GNUzgrep(или OpenBSD zgrep, если уж на то пошло, похоже, это характерно для zgrepна FreeBSD и macOS ). Нет, если только вы не выполняете собственную -обработку результатов, что очень просто:

$ zgrep hello file*.gz | awk -F : 'NR > 1 && $1 != name { print "--" } { name = $1; print }'
file1.gz:hello world
--
file2.gz:hello world
--
file3.gz:hello world
--
file4.gz:hello world
--
file5.gz:hello world

Это передает вывод zgrepчерез короткую программу awk, которая будет вставлять разделитель всякий раз, когда изменяется бит имени файла в строке (перед первым битом :).

1
27.01.2020, 21:01

Теги

Похожие вопросы