用SED和单引号和Reg X替换复杂的字符串



嗨,大家,我对用sed and Regex替换字符串的问题。

我有一个以下重复文本的百分点。

CREATE KEYSPACE xyz WITH replication = {
  'class': 'NetworkTopologyStrategy',
  'NA': '3'
};
USE abc;
CREATE TABLE yyy (
.
.
.
) WITH
  caching='{"keys":"ALL", "rows_per_partition":"NONE"}' AND abcdefg....

我想用匹配的caching='{.abcde..}WITH replication = {..abc..}

替换字符串

***不在乎任何文本。

  1. caching='{..abc...}'

预期caching='KEYS_ONLY'

  1. WITH replication = {..abcdefg...}

预期WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 }

我已经尝试了下面的命令,但没有成功。它替换并切割全文仅保留1行。

sed -r "s/caching='{(.|n)*?}'/caching='KEYS_ONLY'/g")

sed -r "s/WITH replication = {(.|n)*?}/WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 }/g")

有人可以建议我。我该怎么办?

您可以使用tr将 n替换为 f进而请尝试使用[^"]*?

最新更新