Флаг z для команды head в Centos 7 [дубликат]

También puede resolver su problema usando expresiones regulares y grep.

grep -Ev '(,0(,[^0,]+)*){4,}' file.csv

Lo probé en este archivo:

gene,v1,v2,v3,v4,v5,v6,v7
gene1,0,1,5,0,0,4,100
gene2,1,0,0,0,5,210,2
gene3,0,0,0,0,6,0,0
gene4,0,0,0,4,6,0,0
gene5,0,1,0,4,6,0,0

Hay algunas suposiciones:

  • no no -el número cero comienza con un cero,
  • los números cero contienen solo un cero,
  • todos los números son enteros.

La expresión regular podría extenderse para abordar tales casos si lo necesita.

0
18.09.2018, 22:20
1 ответ

Да, поддержка записей с разделителями NUL -постепенно добавлялась в утилиты GNU за последние несколько десятилетий. GNU head -zотносительно недавний (2015 ), в то время как GNU sortимел -zнесколько десятилетий (1996 )иxargs-0даже более длительный (1990 ).

Здесь вы также можете:

find /BACKUPDIR/ -mindepth 1 -maxdepth 1 -type d -print0 |
  sort -rz | sed -z 1,6d | xargs -r0 echo rm -rf

Дополнение -zк GNU sedнедавнее (2012 ), не такое недавнее, как дополнение head.

Текстовые утилиты GNU десятилетиями справлялись с байтами NUL во входных данных, так что вы всегда можете это сделать:

find /BACKUPDIR/ -mindepth 1 -maxdepth 1 -type d -print0 |
  tr '\0\n' '\n\0' |
  sort -r | tail -n +7 | 
  tr '\0\n' '\n\0' |
  xargs -r0 echo rm -rf

Или всегда можно установить zshи сделать

echo rm -rf /BACKUPDIR/*(D/[1,-7])

(см. также квалификатор nglob для численной сортировки, поэтому 10 сортируются после 9, а не между 1 и 2 ).

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

1
28.01.2020, 02:42

Теги

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