У меня была противоположная проблема, и в результате я попал сюда. Мне было интересно, почему мой курсор возвращается к началу файла. Я привык переключаться между буферами, и необходимость каждый раз находить свою позицию была бы совсем неэффективной!
Ни один из ответов здесь не говорит о проблеме, поэтому я решил добавить свой собственный ответ, потому что это решило бы вашу проблему. Все, что мне нужно сделать, это добавить комментарий C или C++ в первую строку после пробела! Я не знаю, будет ли это особенностью или ошибкой, но в этом случае курсор возвращается наверх.
+---- see the space here?
|
v
// first line of file
Удаление комментария или пробела решает мою проблему .
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