Итак, мое решение не совсем такое же, как ваше, но, строго говоря, оно печатает рамку вокруг текста, и реализация немного проще, поэтому я решил поделиться.
banner() {
msg="# $* #"
edge=$(echo "$msg" | sed 's/./#/g')
echo "$edge"
echo "$msg"
echo "$edge"
}
И вот он в действии:
$ banner "hi"
######
# hi #
######
$ banner "hi there"
############
# hi there #
############
Просто обычный текст, никаких причудливых цветов ansi или чего-то еще.
Вы можете просто сделать это:
sed 's| (....)||g' file.txt
Это удалит четыре вхождения любого символа в круглых скобках, причем каждое .
представляет один символ. Он также удаляет пробел перед скобкой.
Если между круглыми скобками несколько символов, можно использовать глобус:
sed 's| (.*)||g' file.txt
Убедившись, что он делает то, что вам нужно, добавьте i
для редактирования файла на место -.
sed -i 's| (....)||g' file.txt
sed -i 's| (.*)||g' file.txt
Замещающая команда s
не имеет флага d
.
Хотя есть командаd
(удалить ):
sed '/ (.*)$/d' file.txt
Это приведет к удалению всех строк из ввода, которые содержат строку в скобках в конце строки, перед которой стоит пробел (, что не является тем, что вы хотите сделать ).
Вместо этого сбросьте флаг и сделайте обычную замену без ничего:
sed 's/ (.*)$//' file.txt
Чтобы ограничить удаление только скобками, содержащими четырехзначные -числа:
sed 's/ ([0-9]\{4\})$//' file.txt