Я не могу скопировать удаленный файл с помощью scp, но могу войти в систему с помощью ssh

Чтобы удалить из строки, содержащей * , до следующей пустой строки, используйте:

sed '/[*]/,/^$/d' filename

Примечания:

  1. Поскольку * является символом, активным регулярным выражением, и нам нужно только чтобы соответствовать литералу * , нам нужно экранировать * . Это можно сделать как \ * или, как показано выше, [*] .

  2. Чтобы сопоставить пустую строку, нам нужна строка без символов между ее началом, обозначенным ^ , и концом, обозначенным $ . Таким образом, ^ $ соответствует пустой строке.

  3. / [*] /, / ^ $ / - это диапазон: он соответствует группе строк, которые начинаются со строки, содержащей * , и заканчиваются пустой строкой.

  4. d указывает sed удалить любую строку в диапазоне.

Вышеупомянутый вывод выводится на стандартный вывод. Чтобы изменить файл на месте, используйте:

sed -i.bak '/[*]/,/^$/d' filename

Пример

Рассмотрим этот пример файла:

$ cat filename
*252
253
254
255

OR
*261
265

end

Это дает:

$ sed '/[*]/,/^$/d' filename
OR
end
2
19.10.2015, 14:24
0 ответов

Теги

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