grep файл для шаблона без точки/расширения и удалить оба со следующей строкой, если она пуста [закрыта]

-1
05.10.2018, 17:39
2 ответа

Я не уверен в вопросе, но думаю, что это был бы ответ:

grep -v '\.' TXrmVpwF | grep -e '/'

grep -v'\.':отфильтровать -строки с точками.

grep -e'/':возьмите остальные пути.

Вот результаты:

# /x/123
# /x/test
# /x/test_backup
# /x/123/10
# /x/123/100
# /x/123/103
# /x/123/1333
0
28.01.2020, 05:12

Предполагая, что файл является текстовым файлом Unix (, а не текстовым файлом DOS, в этом случае вы должны сначала запустить dos2unixнад ним):

sed '/^#/{ /\./!{ N; /\n$/d; }; }' <file

Аннотированный sedскрипт:

/^#/{           # The current line starts with a "#"
    /\./!{      # The current line does not contain a dot
        N;      # Append next line with a \n in-between
        /\n$/d; # The line just appended was empty, delete, start next cycle
    }
}
                # (implicit print)

Если точки разрешены в именах каталогов, но не в последнем компоненте имени пути (, то есть # /x.x/textследует удалить, если за ним следует пустая строка ), затем измените /\./на /\.[^/]*$/.

0
28.01.2020, 05:12

Теги

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