Сценарий Bash. Вставьте пустую строку перед диапазоном чисел

#linux #bash #sed

#linux #bash #sed

Вопрос:

Мне нужен скрипт bash для форматирования текстового файла. Он должен добавить пустую строку перед диапазоном чисел. Что-то вроде примеров на изображениях ниже. Я пытаюсь:

 sed '1{x;d};$H;/^([1-9][0-9]{0,2}|[1-4][0-9]{3}|5000)$/{x;s/^/n/;b};x '/home/name/zxc' > vvvv
  

но он не запускается.

Заранее спасибо.

исходный снимок экрана

целевой снимок экрана

Ответ №1:

Как это будет работать для вас:

  sed '/^[0123456789] $/{x;p;x;}' < input.txt
  

Из http://sed.sourceforge.net/sed1line.txt

  # double space a file
 sed G

 # double space a file which already has blank lines in it. Output file
 # should contain no more than one blank line between lines of text.
 sed '/^$/d;G'

 # triple space a file
 sed 'G;G'

 # undo double-spacing (assumes even-numbered lines are always blank)
 sed 'n;d'

 # insert a blank line above every line which matches "regex"
 sed '/regex/{x;p;x;}'

 # insert a blank line below every line which matches "regex"
 sed '/regex/G'

 # insert a blank line above and below every line which matches "regex"
 sed '/regex/{x;p;x;G;}'
  

Комментарии:

1. Большое спасибо, сехе, все работает нормально. ;-))

2. Привет, сехе, очень любезно с вашей стороны. Я пытаюсь проголосовать, но получаю всплывающее сообщение, что мне нужна репутация 15 раньше.

3. Вот почему важно голосовать за вопросы, а не только за ответы.

4. Поддержка, хотя sed и не лучший инструмент здесь. И мне нравится тот факт, что кто-то поддержал ваш комментарий о принятии ответов, но не поддержал этот ответ.

5. @sehe, и, кроме того, мне нравятся awk / sed и bourne scripting , он доступен везде. Я использую Python , когда он доступен, однако часто там, где я работаю, я считаю это исключением, а не правилом.