テキストがある場合:
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"
見つかった場合は、一致する最初のグループと最後の改行文字を印刷します。
答え2
1つのライナーを少し調整してくださいsed
。
echo -e "aaaaaaaaa\n#some info\nother rows\nend row#\nanother info" |
sed -n '/^#/,/#$/ {s/#//;p;}'
出力:
some info
other rows
end row