2文字間のテキスト抽出(複数行入力)

2文字間のテキスト抽出(複数行入力)

テキストがある場合:

aaaaaaaaa
#some info
other rows
end row#
another info

文字間のテキストのみを抽出するにはどうすればよいですか#

some info
other rows
end row

私はsedこのように努力しています:

echo -e "aaaaaaaaa\n#some info\nother rows\nend row#\nanother info" |
sed -n -e '/\#/,/\#/p'

しかしそれはまた私に性格を与えました##使用を取り除く方法はありますかsed

ベストアンサー1

あなたはそれを使用することができますperl

echo -e "aaaaaaaaa\n#some info\nother rows\nend row#\nanother info" |\
perl -0777 -ne '/#([^#]*)#/ && print $1,"\n"; '

説明する:

  • -0777ファイル全体を1行として扱う(複数行一致可能)
  • /#([^#]*)#/[^#]間に # 以外の文字を一致させ、#角かっこを使用して最初に一致するグループとして追加します。
  • && print $1,"\n"見つかった場合は、一致する最初のグループと最後の改行文字を印刷します。

おすすめ記事