sedを使用して2つのパターン間の文字列の一部を削除するのに問題があります。私は常に最後のPATTERN-2をソートします。
テスト.txt:
PATTERN-1xxxxPATTERN-2aaa
PATTERN-1xxxxPATTERN-2fffPATTERN-1zzzzPATTERN-2gggPATTERN-1zzzzPATTERN-2
PATTERN-1xxxxPATTERN-2bbb
ガイドライン
sed 's/PATTERN-1.*PATTERN-2//g' test.txt
上記の結果は
aaa
bbb
しかし、私は欲しい
aaa
fffggg
bbb
PATTERN-1に最も近いPATTERN-2を見つけることができますか?
ベストアンサー1
@steeldriverが指摘したように、貪欲ではない正規表現があれば簡単です。そうでない場合は、次のようにループを使用して実行できます。
sed ':a;s/PATTERN-2/\n/;s/PATTERN-1.*\n//;ta' test.txt
これは、行の途中に改行文字がないことがわかっているために機能します。これは、どの行にも表示されない他の文字(たとえば)にも当てはまります§
。