Удалить \n, но не \n\n

Ответ Фолькера Сигела очень полезен. Однако если выход должен быть числом между 0 и 8 , для подсчета строк следует добавить grep .

$ wget -O - -q ix.de | grep -Eoi '(cart|shop|buy|order|store|shipping|products|price)' | sort -i | uniq -i | grep -c ''
2

Обратите внимание, что теперь флаг -c uniq не требуется.

-121--123316-

Вот еще одна альтернатива - на всякий случай, если вы искали...

sudo cp /dev/null /path/to/soon/to/be/truncated/file

-121--21173-

Если вы настаиваете на использовании HTML-страницы Splash Page, можно выполнить следующие действия:

  1. Переименовать файл index.html в файл default.html
  2. Загрузить файл default.html в тот же каталог, что и файл index.php
  3. Добавить файл default.html в свой индекс

FWIW, этот вопрос существует с WordPress 2.7. См. это сообщение форума поддержки (последнее сообщение, стр. 2)

0
08.03.2015, 17:38
5 ответов

Новый GNU SED (с параметром -z) Делайте это один проход:

sed -z 's/\n\(\n\|[A-Z0-9][)a-z]\)/ \1/g' DATA
3
28.01.2020, 02:15

Синтаксис для негатива ОГРУЖЧАЮЩИХ НАХРАНЕНИЯ в VIM , как это:

:s/\n\n\@!//gN

, где n - ряд строк. В Perl , это было бы:

s/\n(?!\n)//

Однако , я думаю, вы обнаружите, что это не совсем то, что вы пытаетесь сделать, поскольку в вашем примере вывод, C и b как на своей линии. Если вы замените все новинки, а не за ни одной новой строкой, они будут объединены на предыдущие строки, то есть у вас будет:

23. LoremA) heB) haC) huc
2. Ipsun yes right to write something here?A) OkB) No C) yesb  
0
28.01.2020, 02:15

(Редактированное решение в связи с отзывами о фактических требованиях...)

Вероятно, будет проще понять и реализовать, если вы выполните его в четыре этапа; замените \n\n на какой-нибудь неиспользуемый символ [control] (скажем, \a), добавьте \a в начале строки на \a, затем удалите все \n, и, наконец, замените \a на \n еще раз. (Определите макрос vim, если вам часто нужна эта замена.)

В vim (ex.mode), например:

:%s/\n\n/^A/
:g/^A/s/^/^A/
:%s/\n/ /g
:%s/^A/^M/g

где ^A создается с помощью -V -A, а ^M создается с помощью -V .

1
28.01.2020, 02:15

Мне нравится играть с регулярными выражениями, но на самом деле я не чувствую себя мастером. Я бы сделал то, что вы хотите за 2 шага:

$ perl -i.bak -0pe  's/\n([A-Z])/ \1/g' DATA
$ less DATA
23. Lorem A) he B) ha C) hu
c

2. Ipsun yes right to write something here? A) Ok B) No  C) yes
b

А теперь просто удалите пустые строки, например, функцией sed или flush-строки в Emacs:

$ sed '/^$/d' -i DATA
$ less DATA
23. Lorem A) he B) ha C) hu
c
2. Ipsun yes right to write something here? A) Ok B) No  C) yes
b

Или просто нажмите : в Vim и вставьте это: /^$/d.

EDIT:

$ perl -i.bak -0pe 's/\n([A-Z0-9]\))/ \1/g' DATA
1
28.01.2020, 02:15

Возможно, используя awk + sed? Для:

$ cat quiz 
23. Lorem
A) he
B) ha
C) hu
c

2. Ipsun yes right to write something here?
A) Ok
B) No 
C) yes
b

Run

$ awk NF=NF RS= OFS=' ' quiz | sed 's/\([a-z]$\)/\n\1/' 

23. Lorem A) he B) ha C) hu 
c
2. Ipsun yes right to write something here? A) Ok B) No C) yes 
b
1
28.01.2020, 02:15

Теги

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