我的文件包含内容低于
的行name : 'last1, first1', phone : '1111111111', email :'test123@mail.com', name: 'last2,first2', phone : '2222222222', email: 'test234@mail.com',name: 'last3,first3', phone : '3333333333', email:'test456@mail.com
必须像这样替换。
last name : 'last1', first name : 'first1', phone : '1111111111', email :'test123@mail.com', last name: 'last2', first name : 'first2', phone : '2222222222', email: 'test234@mail.com',last name: 'last3, first name: 'first3', phone : '3333333333', email:'test456@mail.com
围绕sed替换有很多问题,但无法找到解决这个问题的任何回复。如果有,请提供链接。
答案 0 :(得分:0)
使用以下正则表达式将您的字符串回显到sed
:
sed -e "s_name : '\([a-zA-Z 0-9]*\),\([a-zA-Z 0-9]*\)',\(.*\)_last name : '\1', first name '\2', \3_"
给出了这个结果。
last name : 'last1', first name ' first1', phone : '1111111111', email :'test123@mail.com', name: 'last2,first2', phone : '2222222222', email: 'test234@mail.com',name: 'last3,first3', phone : '3333333333', email:'test456@mail.com
修改强>:
您的输入存在不一致:name
的第一个实例后跟空格和冒号,而其他实例只有冒号,而不是空格。这是一个考虑到这一点的更新版本:
sed -e "s_name *: '\([a-zA-Z 0-9]*\),\([a-zA-Z 0-9]*\)',_last name: '\1', first name: '\2', _g"
给出:
last name: 'last1', first name: ' first1', phone : '1111111111', email :'test123@mail.com', last name: 'last2', first name" 'first2', phone : '2222222222', email: 'test234@mail.com',last name: 'last3', first name: 'first3', phone : '3333333333', email:'test456@mail.com