удалить все строки от строки соответствия до конца, включая строку соответствия

У меня была противоположная проблема, и в результате я попал сюда. Мне было интересно, почему мой курсор возвращается к началу файла. Я привык переключаться между буферами, и необходимость каждый раз находить свою позицию была бы совсем неэффективной!

Ни один из ответов здесь не говорит о проблеме, поэтому я решил добавить свой собственный ответ, потому что это решило бы вашу проблему. Все, что мне нужно сделать, это добавить комментарий C или C++ в первую строку после пробела! Я не знаю, будет ли это особенностью или ошибкой, но в этом случае курсор возвращается наверх.

+---- see the space here?
|
v
 // first line of file

Удаление комментария или пробела решает мою проблему .

0
02.04.2020, 17:38
1 ответ
sed '/EXPORTER_JAR_PATH/,$d' file

Это приведет к удалению всех строк от первой строки, содержащей подстроку EXPORTER_JAR_PATH, до конца файла($с адресом конца файла )включительно.

Ваша команда удаляет все строки, которые не попадают в диапазон между строкой 1 и строкой, содержащей эту строку, включительно. Это означает, что строка, содержащая подстроку EXPORTER_JAR_PATH, не будет удалена.

В качестве альтернативы, как указано в комментариях ниже как Павла _Кулона, так и mosvy,

sed -n '/EXPORTER_JAR_PATH/q;p' file

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

То же, что и awk, будет читаться как

awk '/EXPORTER_JAR_PATH/ { exit } { print }' file

или, короче,

awk '/EXPORTER_JAR_PATH/ { exit }; 1' file
0
28.04.2021, 23:19

Теги

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