我正在使用单词“line1”的日志,并且需要替换字符之间的单词后面的文本:和 可能的结果是:
xxx,\"line1\":\"C/O FRED FLINSTONE, MD\",xxx
xxx,\n line1: 'C/O FRED FLINSTONE, MD',xxx
xxx,\\\"line1\\\":\\\"C\\\\/O FRED FLINSTONE\\\,MD",xxx
我想用“Redacted-Address1”替换“C / O FRED FLINSTONE,MD”,所以最终结果如下:
xxx,\"line1\":Redacted-Address1,xxx
xxx,\n line1:Redacted-Address1,xxx
xxx,\\\"line1\\\":Redacted-Address1,xxx
我不一定需要使用SED,但认为这是一个很好的起点。 xxx表示该行的重置(不是实际的xxx),因此我们无法通过搜索,我想保持不变。
更完整的数据示例如下:
,\"object\":{\"address\":[{\"city\":\"Bedrock\",\"line1\":\"C/O FRED FLINSTONE\, MD\",\"line2\":\"55101 Main St\",\"state\":\"TX\",\"use\":\"H\",\"zip\":69162}],
期望的结果将是:
,\"object\":{\"address\":[{\"city\":\"Bedrock\",\"line1\":Redacted-Address1,\"line2\":\"55101 Main St\",\"state\":\"TX\",\"use\":\"H\",\"zip\":69162}],
答案 0 :(得分:1)
使用sed
sed -r '/line1/{s/([\]"line1[\]":)[\]"[^"]+",/\1Redacted-Address1,/}'
例如
echo ',\"object\":{\"address\":[{\"city\":\"Bedrock\",\"line1\":\"C/O FRED FLINSTONE\, MD\",\"line2\":\"55101 Main St\",\"state\":\"TX\",\"use\":\"H\",\"zip\":69162}], '|sed -r '/line1/{s/([\]"line1[\]":)[\]"[^"]+",/\1Redacted-Address1,/}'
输出
,\"object\":{\"address\":[{\"city\":\"Bedrock\",\"line1\":Redacted-Address1,\"line2\":\"55101 Main St\",\"state\":\"TX\",\"use\":\"H\",\"zip\":69162}],
答案 1 :(得分:1)
听起来你想要在private List<Enum> getEnumFromType(List<Bean.Var> vars, List<Enum> enums) {
return new ArrayList<>(
vars.stream()
.map(var -> var.getType().substring(1))
.flatMap(s -> enums.stream()
.filter(e -> s.equals(e.getName())))
.collect(Collectors.toSet())
);
}
之后的冒号和紧接在下一个冒号之前的昏迷之间获取所有内容。以下正则表达式应该通过替换除捕获组之外的所有内容来实现:
line1
答案 2 :(得分:0)
您可以将此sed用于贪婪的正则表达式:.*,
,它将从:
到最后,
匹配:
sed 's/:.*,/:Redacted Name,/' file
xxx,\"line1\":Redacted Name,xxx
xxx,\n line1:Redacted Name,xxx
xxx,\\"line1\\":Redacted Name,xxx
根据以下评论:
sed "s/:..*['\"],/:Redacted Name,/" file
xxx,\"line1\":Redacted Name,xxx
xxx,\n line1:Redacted Name,xxx
xxx,\\"line1\\":Redacted Name,xxx
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed 's/\(line1[^:]*:\).*,/\1Redacted Name,/' file
这使用模式line1
,后面的任何字符都不是:
后跟:
;然后贪婪(文件末尾的所有字符然后回溯直到找到,
)。然后,匹配将由模式的后引用替换为第一个:
和所需的字符串,后跟,
。