Как заменить несколько строк одним словом в файле (заменить на место)?

Я всегда предпочитал figlet для большой записи. Что-то в нем лучше сохраняет форму персонажа. Немного субъективно, но ты туда идешь. Достаточно просто:

$ sudo apt-get install figlet
$ figlet oh hai!
       _       _           _ _ 
  ___ | |__   | |__   __ _(_) |
 / _ \| '_ \  | '_ \ / _` | | |
| (_) | | | | | | | | (_| | |_|
 \___/|_| |_| |_| |_|\__,_|_(_)

(он выглядит лучше в терминале, чем здесь)

Существует множество вариантов форматирования, которые делают его подходящим для множества разных ситуаций. Это происходит через «шрифты» (standard, slant, shadow, small, smslant, bubble, digital, mini и т. Д.). man figlet содержит полный список доступных стилей и вариантов форматирования, но вот несколько примеров:

$ figlet -f slant Hooah!
    __  __                  __    __
   / / / /___  ____  ____ _/ /_  / /
  / /_/ / __ \/ __ \/ __ `/ __ \/ / 
 / __  / /_/ / /_/ / /_/ / / / /_/  
/_/ /_/\____/\____/\__,_/_/ /_(_)   

$ figlet -f smslant Hooah!
   __ __               __   __
  / // /__  ___  ___ _/ /  / /
 / _  / _ \/ _ \/ _ `/ _ \/_/ 
/_//_/\___/\___/\_,_/_//_(_)  

$ figlet -f bubble Hooah!
  _   _   _   _   _   _  
 / \ / \ / \ / \ / \ / \ 
( H | o | o | a | h | ! )
 \_/ \_/ \_/ \_/ \_/ \_/ 

$ figlet -f mini Hooah!

|_| _  _  _.|_ | 
| |(_)(_)(_|| |o 
1
задан 29 September 2017 в 14:45

1 ответ

Мне было интересно, возможно ли это без perl, python и других. И я нашел это решение, используя sed:

$ sed ':a;N;$!ba;s/START.*END/SINGLEWORD/g' filename

Объяснение:

: создать метку 'a' N добавить следующую строку в пространство шаблонов $! если не последняя строка, ba branch (go to) заменить метку 'a', /START.*END/ на SINGLEWORD, / g глобальное совпадение (столько раз, сколько может)

Здесь было найдено .

@ KasiyA, спасибо, я узнал много интересного!

10
ответ дан 24 May 2018 в 03:04

Другие вопросы по тегам:

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