BASH:在特定位置插入文本

时间:2013-04-22 14:32:48

标签: bash text grep

我想找到一个在字符串中添加一些字符的解决方案

实施例

folder/dir/directory/file.txt
shares/page.html
etc/downloads/torrent.torrent

应该成为

.folder.old/dir/directory/file.txt
.shares.old/page.html
.etc.old/downloads/torrent.torrent

我该怎么做? 'grep'会是正确的选择吗?

谢谢

2 个答案:

答案 0 :(得分:4)

使用sed代替grep

sed -i.bak 's#^\([^/]*\)#.\1.old#'

请注意-i会将结果保存在原始文件中。如果出现问题,-i.bak会将原始文件保存为.bak

答案 1 :(得分:4)

grep仅搜索,不会替换。你想要sed

sed -i.bak 's#^\([^/]*\)#.\1.old#'

^表示行的开头
\(...\)正在捕捉括号,其匹配的模式在替换中变为\1 除了[^/]之外,/匹配任何内容 *为前面的零或更多