BASH:插入文本在特定位置
我想找到一个解决方案,以在一个字符串添加一些字符BASH:插入文本在特定位置
例
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'将是一个正确的选择?
谢谢
使用sed
,而不是grep
:
sed -i.bak 's#^\([^/]*\)#.\1.old#'
注意-i
将结果保存在原始文件本身。 -i.bak
将保存您的原始文件与.bak
扩展万一出现问题。
那真是太神奇了! – user2302636 2013-04-22 14:40:40
它可以在目录上工作吗? – user2302636 2013-04-22 14:49:56
你可以在一组文件上使用它:'sed -i.bak's#^ \([^ /] * \)#。\ 1.old#'* .txt' – anubhava 2013-04-22 14:52:10
grep
只搜索,它不会做替换。你想sed
:
sed -i.bak 's#^\([^/]*\)#.\1.old#'
^
表示线路\(...\)
的开端是成功捕获括号,它匹配模式的更换变得\1
。 [^/]
匹配任何不是/
*
是零个或多个前面的
谢谢你的完整解释 – user2302636 2013-04-22 14:41:28
'sed'是你想为这个问题的命令,不'grep'。 – imp25 2013-04-22 14:35:08