linux下如何替换跨多行的字符串
例:文件file有字符串:abcdefghijklmnopqrstuvwxyz(省略多行)1234567890我想通过替换字符串并结合正则表达式,将文件中hijklmn一...
例:
文件file有字符串:
abcdefghijklmn
opqrstuvwxyz
(省略多行)
123456
7890
我想通过替换字符串并结合正则表达式,将文件中hijklmn一直到456的字符串替换为abc字符串,执行结果为:
abcdefgabc
7890
请问如何实现? 最好不需要打开文件就能实现的,如果sed命令能够实现最好。非常感谢!! 展开
文件file有字符串:
abcdefghijklmn
opqrstuvwxyz
(省略多行)
123456
7890
我想通过替换字符串并结合正则表达式,将文件中hijklmn一直到456的字符串替换为abc字符串,执行结果为:
abcdefgabc
7890
请问如何实现? 最好不需要打开文件就能实现的,如果sed命令能够实现最好。非常感谢!! 展开
2个回答
展开全部
诸多原因,使用前请自行准确匹配两个关键字符串,再拿掉"-i"选项进行输出测试.如下脚本使用了"-i"选项将是对操作文件进行直接的更改,此脚本没有为操作文件进行备份,所以说是个危险的动作,请谨慎参考!
GNU shell sed 4版测试通过. 单行脚本如下:
sed -i -e ':label; /hijklmn/,/456/ { /456/! { $! { N; b label }; }; s/hijklmn.*456/abc/; }' file
追问
测试成功,非常感谢! 太完美了!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询