Unix命令按字符串前的长度删除前特定字段

Unix命令按字符串前的长度删除前特定字段,unix,sed,Unix,Sed,如何删除字符串前的固定长度字段 范例 输入: "abcdefg": {"field_string","xxx","yyy"}, "hijklmn": {"field_string","xyz","dey"}, "opqrstu": {field_string","xxx","yyy"} 输出: {"field_string","xxx","yyy"}, {"field_string","xyz","dey"}, {field_string","xxx","yyy"} 在“{field_str

如何删除字符串前的固定长度字段

范例

输入:

"abcdefg": {"field_string","xxx","yyy"}, "hijklmn": {"field_string","xyz","dey"}, "opqrstu": {field_string","xxx","yyy"}
输出:

{"field_string","xxx","yyy"}, {"field_string","xyz","dey"}, {field_string","xxx","yyy"}
在“{field_string”之前,必须删除字符长度

在每一行上重复输入

谢谢你

一个简单的方法:

sed -e 's/.\{11\}\({[^}]*}\)/\1/g'
因为你说的是固定长度,所以这只是在每个{}块之前删除11个字符

或者更准确的方法删除…:在{}块之前:

注意:上面的选项没有检查文件\字符串是否存在,如果您想,并且不确定第一个是否存在,请使用以下选项:

sed -e 's/"[^"]*": \({"\{0,1\}field_string[^}]*}\)/\1/g'
或者严格按照您的描述:

sed -e 's/"[^"]*": \({"\{0,1\}field_string\)/\1/g'
例如:

opqrstu后面的字段_字符串前面的双引号似乎丢失了,包括预期的输出。这是输入错误还是预期的输入错误?
sed -e 's/"[^"]*": \({"\{0,1\}field_string\)/\1/g'
$ cat file
"abcdefg": {"field_string","xxx","yyy"}, "hijklmn": {"field_string","xyz","dey"}, "opqrstu": {field_string","xxx","yyy"}

$ sed -e 's/"[^"]*": \({"\{0,1\}field_string\)/\1/g' file
{"field_string","xxx","yyy"}, {"field_string","xyz","dey"}, {field_string","xxx","yyy"}