BASH:在特定位置插入文本

Vit*_*ici 2 bash grep text

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

例子

folder/dir/directory/file.txt
shares/page.html
etc/downloads/torrent.torrent
Run Code Online (Sandbox Code Playgroud)

应该成为

.folder.old/dir/directory/file.txt
.shares.old/page.html
.etc.old/downloads/torrent.torrent
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?'grep' 是一个正确的选择吗?

谢谢

anu*_*ava 5

使用sed而不是grep

sed -i.bak 's#^\([^/]*\)#.\1.old#'
Run Code Online (Sandbox Code Playgroud)

请注意,-i会将结果保存在原始文件本身中。-i.bak将保存带有扩展名的原始文件.bak,以防出现问题。


Kev*_*vin 5

grep只进行搜索,不进行替换。你要sed

sed -i.bak 's#^\([^/]*\)#.\1.old#'
Run Code Online (Sandbox Code Playgroud)

^意味着行的开头
\(...\)正在捕获括号,它匹配的模式将成为\1替换内容。
[^/]匹配任何内容,但/
*前面的零个或多个