расширение параметров действительно сделало трюк.
echo ${1%.S??E*}|sed 's/\./ /'
повторяет имя серии и меняет потенциальные точки на пробелы. Это не работает для всех серий (например, для Mr. Robot нужна точка), но это уже достаточно близко.
Публикация желаемого вывода без указания правил/логики, которые необходимо применить для его получения, на самом деле не поможет решить вашу проблему. Кто-то может просто повторить/распечатать вывод без привязки к вводу.Предполагая, что вы хотите, чтобы строки между \begin{code}
и \end{code}
исключались, попробуйте
sed -n '/\\begin/,/\\end/ {/{code}/!p}' file
code1
-- comment1
code1A
-- comment2
code1B
codeB
Если вам нужны пустые строки, добавьте /^ *$/p
к скрипту sed
.
РЕДАКТИРОВАТЬ:Вот так:
$ sed -n '/\\begin/,/\\end/ {/{code}/!p}; /^ *$/p' file
code1
-- comment1
code1A
-- comment2
code1B
codeB
Примечание:Редактирование вопроса с тех пор сделало это решение устаревшим.
Поскольку вы просто хотите отфильтровать определенные строки для вывода, grep
может выполнить эту работу.
$ grep -v -e "T[0-9]" -e '^\\begin{code}$' -e '^\\end{code}$' file.txt
code1
-- comment1
code1A
-- comment2
code1B
codeB