見たここsed を使用して、1 行の別の 2 つの文字列間のテキストを取得する方法。たとえば、次のようになります。
sed 's/.*starting_text\(.*\)ending_text.*/\1/'
tr
しかし、2つの文字列だけを使用して、最初の文字列の前または2番目の文字列の後のすべての項目を切り取る単純なコマンド(たとえば、文字列抽出の場合)が必要です。
grep something some_file | between message\"\:\" " with"
そしてエスケープ文字を処理します。
ベストアンサー1
区切り文字が1行に複数回表示される場合は、代わりに次のようにPerlを使用できます。
between() {
perl -Tlne 'BEGIN{$b=shift;$e=shift}
print for /\Q$b\E(.*?)\Q$e\E/g' "$@"
}
たとえば、次のようになります。
$ echo "[b]test[e] foo [b]bar[e]" | between '[b]' '[e]'
test
bar
次のように使用することもできます。
between BEG END file1 file2...