我是一个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命令? 我想在我的文件的许多行上重复相同的操作。 任何建议都会对我有所帮助。
答案 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
基于最后一条路径作为第一条路径上的模式