如何用sed进行匹配和部分替换
How to match and partial substitute with sed
如何匹配子字符串“2153846-11”(有时仅由数字组成,如“2153846”,有时如“2153846-11”或“2153846_11”,有时如“2153846-1” " 总是数字并且在第一组中不少于 5) 在以下内容中:
"01/16/2015","2153846-11","2015-01-16 02:50:18.0","lch_demo_hidemi-19459072-2","","01/16/2015"
并用第一组(在 dash/underscore 之前)替换匹配的字符串,删除第二组。
最终结果将是:
"01/16/2015","2153846","2015-01-16 02:50:18.0","lch_demo_hidemi-19459072-2","","01/16/2015"
该指令将被写入一个独特的 sed 行,如
sed -e 's/...//g' < myfile
谢谢
您可以使用这个 sed:
sed 's/"\([0-9]*\)[_-][0-9]*"/""/g' file
"01/16/2015","2153846","2015-01-16 02:50:18.0","lch_demo_hidemi-19459072-2","","01/16/2015"
您可以试试下面的 sed 命令。
$ echo '"01/16/2015","2153846-11","2015-01-16 02:50:18.0","lch_demo_hidemi-19459072-2","","01/16/2015"' | sed -r 's/"(2153846)([_-]11)?"/""/g'
"01/16/2015","2153846","2015-01-16 02:50:18.0","lch_demo_hidemi-19459072-2","","01/16/2015"
如何匹配子字符串“2153846-11”(有时仅由数字组成,如“2153846”,有时如“2153846-11”或“2153846_11”,有时如“2153846-1” " 总是数字并且在第一组中不少于 5) 在以下内容中:
"01/16/2015","2153846-11","2015-01-16 02:50:18.0","lch_demo_hidemi-19459072-2","","01/16/2015"
并用第一组(在 dash/underscore 之前)替换匹配的字符串,删除第二组。
最终结果将是:
"01/16/2015","2153846","2015-01-16 02:50:18.0","lch_demo_hidemi-19459072-2","","01/16/2015"
该指令将被写入一个独特的 sed 行,如
sed -e 's/...//g' < myfile
谢谢
您可以使用这个 sed:
sed 's/"\([0-9]*\)[_-][0-9]*"/""/g' file
"01/16/2015","2153846","2015-01-16 02:50:18.0","lch_demo_hidemi-19459072-2","","01/16/2015"
您可以试试下面的 sed 命令。
$ echo '"01/16/2015","2153846-11","2015-01-16 02:50:18.0","lch_demo_hidemi-19459072-2","","01/16/2015"' | sed -r 's/"(2153846)([_-]11)?"/""/g'
"01/16/2015","2153846","2015-01-16 02:50:18.0","lch_demo_hidemi-19459072-2","","01/16/2015"