Ответ Фолькера Сигела очень полезен. Однако если выход должен быть числом между 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, можно выполнить следующие действия:
FWIW, этот вопрос существует с WordPress 2.7. См. это сообщение форума поддержки (последнее сообщение, стр. 2)
Новый GNU SED (с параметром -z) Делайте это один проход:
sed -z 's/\n\(\n\|[A-Z0-9][)a-z]\)/ \1/g' DATA
Синтаксис для негатива ОГРУЖЧАЮЩИХ НАХРАНЕНИЯ в 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
(Редактированное решение в связи с отзывами о фактических требованиях...)
Вероятно, будет проще понять и реализовать, если вы выполните его в четыре этапа; замените \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
создается с помощью
, а ^M
создается с помощью
.
Мне нравится играть с регулярными выражениями, но на самом деле я не чувствую себя мастером. Я бы сделал то, что вы хотите за 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
Возможно, используя 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