私のドキュメントには次の側面があります。
Text1
\begin{code}
code1
\end{code}
Text2
\begin{code}
-- comment1
code1A
\end{code}
Text3
\begin{code}
-- comment2
code1B
\end{code}
Text4
\begin{code}
codeB
\end{code}
Text 5
私が探している結果は次のとおりです。
code1
-- comment1
code1A
-- comment2
code1B
codeB
答え1
ノート:質問を修正すると、このソリューションは廃止されました。
特定の出力行だけをフィルタリングしたいので、これを行うとgrep
操作が行われます。
$ grep -v -e "T[0-9]" -e '^\\begin{code}$' -e '^\\end{code}$' file.txt
code1
-- comment1
code1A
-- comment2
code1B
codeB
答え2
ルール/論理を指定せずに目的の出力を公開することは、実際にはトラブルシューティングには役立ちません。誰かが入力を含まずに出力をエコー/印刷できますか? 2つの間に線を入れ、2つのうちの1つを除外するとし\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