私はこのような文字列を持っています
AAA: BBB: CCC: DDD: EEE
交換する必要があります
AAA: BBB: CCC:
そして
FF:
だからそれは
FFF: DDD: EE
ありがとうございます。
答え1
GNUsed
と拡張正規表現(-r
)を使用すると、次のことが機能します。
sed -r "s/^([^:]*:){3}/FFF:/"
sed <...> filename.txt
またはecho "$original_string" | sed <...>
これは、行の先頭()で始まり、「コロンを除くすべての項目()」と、パターン付きのコロンで構成されるパターンを^
3回連続して含む部分文字列を置き換えます。[^:]
FFF:
答え2
以下を使用できます。
$ sed -e 's/:/\n/3;s/.*\n/FFF:/' file
ここでは、n番目の変更n <= 512を実装するためにsedの関数を使用します。さらに、改行は、G、H、Nを介して事前に導入されているか、私たちの例のようにリテラル改行が追加されていない限り、パターン空間には見えないことが保証されています.
これはヌセパ(Gnu Seism)です。 Posix sedはエスケープされたリテラル改行文字を使用します。