如何删除字符串前的固定长度字段。
示例
输入:
"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'
个字符长度之前
每行重复输入
谢谢
答案 0 :(得分:0)
一种简单的方法:
sed -e 's/.\{11\}\({[^}]*}\)/\1/g'
由于您说了fixed length
,所以这只需要在每个{}
块之前删除11个字符。
或更准确的方法(在"...":
块之前删除{}
)
sed -e 's/"[^"]*": \({[^}]*}\)/\1/g'
请注意,上面的那些并没有检查file_string
是否存在,如果需要,并且不确定第一个"
是否存在,请使用以下方法:
sed -e 's/"[^"]*": \({"\{0,1\}field_string[^}]*}\)/\1/g'
或严格按照您的描述
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"}