我正在编写一个shell脚本来修改文件,我在其中有一行代码:
sed s / here \(。* \ n \)/ gone \ 1 / g
不幸的是,搜索似乎与最长的字符串匹配(即,它一直到最后一个\ n - 因此只给我一个替换)但我希望它只匹配到第一个\ n它找到(所以我可以在每一行得到替换)。
这可能吗?
感谢您的帮助!
答案 0 :(得分:0)
您希望名为non-greedy (or lazy)的功能匹配。遗憾的是sed
没有提供此类功能。要模拟它,您需要搜索任何 分隔符匹配直到分隔符匹配。像这样:
s/here \([^\n]*\n\)/gone \1/g