Як "grep" для довжини рядка * not * у заданому діапазоні?


17

ПРИМІТКА: Це питання є доповненням до цього питання і запитань: Як "грепнути" на довжину рядка в заданому діапазоні?


Як ми можемо схватитися за рядки, які містять менше 8 або більше 63 символів, жоден з яких містить більше восьми та менше 63 символів?

Отже, деякі прийнятні підрахунки символів можуть бути ...

7 6 5 4 3 2 1 0

... і ...

64 65 66 67 ...

3
Я знаю, що ви просите grep, але ви можете розглянути awk, особливо якщо вам потрібна подальша обробка тощо (дуже гнучка і читабельна ): awk '( length($0)<8 ) || ( length($0)>63 )' # за замовчуванням умова - це надрукувати рядки, що відповідають умові. Або з меншою обробкою на $ 0:awk '{ l=length($0) ; if (( l<8 ) || l>63 ) { print $0 ;} }'
Олів'є Дулак

@mikeserv - так, дивлячись на це ще раз, мабуть, має сенс закрити до цього запитання інший як дубль.
slm

@mikeserv - це взагалі біль, я повинен злити відповіді в один із запитань, і вони видаляються з оригіналу. Ось такі вказівки для цього: "Питання повинні бути об'єднані, коли вони на 99% однакові, і було б вигідно, щоб усі відповіді з декількох повторюваних питань були в одному місці. Це видаляє відповіді, переміщує їх до цільового питання та залишає поточне питання як заглушка із посиланням на ціль об'єднання ".
slm

що сталося з моїм коментарем?
Дмитро Григор’єв

@DmitryGrigoryev - здогадайтеся, комусь це не сподобалось. візьміть його у того, хто там був - забудьте про це.
mikeserv

Відповіді:


38
grep -xv '.\{8,63\}' <input >output

grep«S -xперемикач позначає цілу лінію матч - який повинен сказати , що будь-який шаблон відповідає повинен визначити лінію від голови до хвоста. роби ...

grep -x pattern

... в цілому еквівалентно ...

grep ^pattern$

grep«S -vперемикач зводить на немає вплив візерунка на лінії відбору. взагалі роблять ...

grep pattern

... буде вибирати лише рядки, які відповідають шаблону, але з -vзаперечним візерунком вибираються лише ті рядки, які не відповідають.

... і так ...

grep -xv '.\{8,63\}'

... відповідає всім рядкам, що складаються з голови в хвіст будь-якого місця між 8 і 63 символами, а -vзаперечне виділення призводить grepлише до друку всього іншого.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.