Я пытаюсь найти все экземпляры из 3 или более новых строк и заменить их только двумя новыми строками (представьте себе файл, в котором слишком много пробелов). Я использую sed, но согласен с ответом, использующим awk или тому подобное, если это проще.
примечание: у меня Mac, поэтому sed немного отличается от Linux (BSD против GNU)
Моя настоящая цель - новые строки, но я не могу заставить ее работать вообще, поэтому для простоты я пытаюсь сопоставить 3 или более повторений bla
и заменить их на BLA
.
Создайте пример файла с именем глупо.txt:
$ cat stupid.txt
blablabla
$
Насколько я понимаю, вы сопоставляете i или больше вещей, используя синтаксис регулярного выражения thing{i,}
.
Я пробовал варианты этого, чтобы сопоставить 3 bla
, но безуспешно:
cat stupid.txt | sed 's/bla{3,}/BLA/g' # simplest way
cat stupid.txt | sed 's/bla\{3,\}/BLA/g' # escape curly brackets
cat stupid.txt | sed -E 's/bla{3,}/BLA/g' # use extended regular expressions
cat stupid.txt | sed -E 's/bla\{3,\}/BLA/g' # use -E and escape brackets
Теперь у меня нет идей, что еще попробовать!