Получите номера строки для строк с пустыми полями

Создать файл tar с относительным путем,

cd /parent/of/dir/to/tar
tar cvf subdir.tar subdir

Для распаковки tar в определенный каталог кроме текущего рабочего каталога используйте-C (верхний регистр C) переключатель.

Если Вы хотите к untar файл с абсолютными путями в нем к точке кроме корня, Вы, возможно, должны были бы иметь предосудительные отношения chroot(1).

1
18.04.2018, 02:08
3 ответа
# cut -d \| -f 6 test.txt | grep -v -E .\+ -n

grep 
    -v invert match
    -E .\+ match any 1+ character
    -n output line numbers
5
27.01.2020, 23:11
  • 1
    я на самом деле закончил тем, что использовал '^ $ ', но-n был недостающей частью для меня! Спасибо –  David Oneill 15.06.2011, 17:54
  • 2
    Или Вы могли просто искать не -.. –  Gilles 'SO- stop being evil' 15.06.2011, 20:26
  • 3
    Этот метод печатает дополнительное двоеточие : после каждого номера строки... с помощью: GNU grep 2.5.4 –  Peter.O 16.06.2011, 12:53
  • 4
    @Peter. O затем используют двоеточие в качестве разделителя для сокращения, т.е. cut -d \| -f 6 test.txt | grep -v -E .\+ -n | cut -d ':' -f1 –  Novice C 27.09.2016, 23:47

Можно объединиться cut и grep поскольку другие показали, или можно использовать универсальный текстовый фильтр awk.

awk -F'|' '$6 == "" {print NR}'
4
27.01.2020, 23:11
  • 1
    Острота. Отметьте другими, которые могли бы приехать: как записано, эта команда берет вход от stdin., добавляют < filename.txt в конец читать из файла. –  David Oneill 15.06.2011, 22:24
  • 2
    @Davie Oneill: awk не требует, чтобы файл был через stdin перенаправление < (который может также быть перед командой awk)... awk может исходно принять вход через имя (имена) файла как его последний параметр (параметры). –  Peter.O 16.06.2011, 13:18

^ в регулярном выражении соответствует началу строки, и $ конец, таким образом, ^$ соответствия пустые строки. grep берет a -n аргумент, что выводы номера строки согласующих отрезков длинной линии вместо самих строк, таким образом:

$ grep -n '^$'

Можно также использовать -v чтобы инвертировать соответствие и считать несогласующие отрезки длинной линии, в этом случае Вы хотите соответствовать строкам, которые имеют по крайней мере один символ (где . соответствия любой символ):

$ grep -n -v .
1
27.01.2020, 23:11
  • 1
    Вы читаете мой вопрос неправильно: Я хочу номера строки, не количество. Но +1 за '^ $' –  David Oneill 15.06.2011, 17:53
  • 2
    @David Да, я на самом деле зафиксировал его перед комментарием; я перечитал его и понял :). guido добрался, это правильный первый –  Michael Mrozek♦ 15.06.2011, 17:54
  • 3
    (выше комментария был от того, когда он отвечает на содержавший-c вместо-n), –  David Oneill 15.06.2011, 17:55

Теги

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