使用awk和/或sed命令扩充路径

时间:2015-03-06 11:51:14

标签: awk sed

我是一个awk和sed新手。我在文件中有以下字符串

mount --bind /vsepr_app_repo/fedora/20/plone/4.3.4/Plone/buildout-cache/downloads /buildout-cache/downloads

我希望从中产生以下输出:

mount --bind /vsepr_app_repo/fedora/20/plone/4.3.4/Plone/buildout-cache/downloads /Plone/buildout-cache/downloads

如何在shell脚本中使用sed和awk命令? 我想在我的文件的许多行上重复相同的操作。 任何建议都会对我有所帮助。

2 个答案:

答案 0 :(得分:0)

在不知道更多细节的情况下,以下awk命令是一个开始。

$ cat data
mount --bind /vsepr_app_repo/fedora/20/plone/4.3.4/Plone/buildout-cache/downloads /buildout-cache/downloads
$ awk '/^mount.*buildout-cache.downloads/ { $NF = "/Plone" $NF; print }' < data
mount --bind /vsepr_app_repo/fedora/20/plone/4.3.4/Plone/buildout-cache/downloads /Plone/buildout-cache/downloads

对于以/Plone开头且以mount结尾的所有行,它会在buildout-cache/downloads行的最后一个标记前面加上。

/^mount.*buildout-cache.downloads/部分使块适用于与正则表达式匹配的行。命令块使用$NF,它是对该行上最后一个字段的引用,以"/Plone"为前缀,然后打印出整行。

答案 1 :(得分:0)

表示路径

中的通用文件夹名称
sed 's#\(/[^/]\{1,\}\)\(/.\{1,\}\)\([[:space:]]\{1,\}\)\2$#\1\2\3\1\2#' YourFile

基于最后一条路径作为第一条路径上的模式