【问题标题】:Augmentation of a path using awk and/or sed commands使用 awk 和/或 sed 命令扩充路径
【发布时间】:2015-03-06 11:51:13
【问题描述】:

我是 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 命令来做到这一点? 我想对文件的多行重复相同的操作。 任何建议都会对我有很大帮助。

【问题讨论】:

  • 去掉开头的所有>符号。
  • 对你想要的东西更明确一点。是加了Plone这个词吗?在文件的每一行上,或者只是在这个完全相同的行上,......这会改变很多事情。

标签: awk sed


【解决方案1】:

在不了解更多细节的情况下,下面的 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

对于以mount 开头并以buildout-cache/downloads 结尾的任何行,它将在该行的最后一个标记前面加上/Plone

/^mount.*buildout-cache.downloads/ 部分使块应用于匹配正则表达式的行。命令块使用$NF,它是对行中最后一个字段的引用,在它前面加上"/Plone",然后将整行打印出来。

【讨论】:

    【解决方案2】:

    用于路径中的通用文件夹名称

    sed 's#\(/[^/]\{1,\}\)\(/.\{1,\}\)\([[:space:]]\{1,\}\)\2$#\1\2\3\1\2#' YourFile
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      • 2014-08-22
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多