Удалить весь текст перед первым маркером и после второго маркера - PullRequest
2 голосов
/ 07 сентября 2011

Итак, я пишу сценарий, и у меня есть текстовый файл, подобный этому:

blahblahblahdeleteme
<!-- post --> 
This is the text I want to keep! Pick me!!
<!-- post navigation --> 
more text please delete me I am not needed....

Я хотел бы удалить первую и последнюю части (и маркер, если это легко сделать) и сохранитьтекст посередине.

Теперь я знаю, что bash обычно не самый лучший способ для анализа подобного текста, но, поскольку он прост, я подумал, что с таким же успехом можно использовать bash.Это так просто, как мне кажется?

Я нашел этот пост: разделить текстовый файл на два с помощью bash-скрипта

Я мог бы разделить его на два текстовых файла, а затем еще на два и просто сохранить средний.Это моя лучшая ставка?Пожалуйста, дайте мне знать!

Ответы [ 3 ]

5 голосов
/ 07 сентября 2011
sed '1,/<!-- post -->/d;/<!-- post navigation -->/,$d' file
  • от 1-й строки до первой отметки: удалить
  • от второй отметки до конца файла ($) удалить
2 голосов
/ 07 сентября 2011
awk '/<\!-- post --/,/<\!-- post navigation/' file
1 голос
/ 07 сентября 2011

Это было бы действительно легко в awk:

/^<!-- post -->/ { if (start != 1)
    { start=1; firstline=1;}
}

/^<!-- post navigation -->/ {start=0;}

{ if (start == 1 && firstline != 1)
  { print $0; }
  firstline=0;
}
...